CMS Automne

Forum de la communauté du CMS Automne
Nous sommes actuellement le Dim Déc 22, 2024 7:36 am

Le fuseau horaire est UTC [Heure d’été]




Publier un nouveau sujet Répondre au sujet  [ 19 messages ]  Aller vers la page Précédent  1, 2
Auteur Message
 Sujet du message:
MessagePublié: Mer Avr 08, 2009 10:30 am 
Hors-ligne
Administrateur
Avatar de l’utilisateur

Inscrit(e) le : Mer Juin 15, 2005 8:28 am
Message(s) : 759
Localisation : Sophia Antipolis
Donc, je reprends mon code ci-dessus pour paginer l'affichage des poissons, il faut relancer une recherche sur les poissons de l'espèce et paginer l'affichage des résultats de cette recherche, ce qui donne quelque chose de ce style :
Code :
<row>
   <block module="Aquarium" id="aqua" language="fr">
      <div id="searchresult">
         <atm-xml what="{request:string:out} == 'xml'">
            <!-- recherche des especes-->
         <atm-search what="{Especes}" name="searchEspeces">
               <atm-search-order search="searchEspeces" type="{Especes:Titre:fieldID}" direction="asc" />
               <atm-result search="searchEspeces">   
                  <div class="espece">
                     <a href="{page:self:url}?espece={Especes:id}">{Especes:Titre:value}</a>                     
                  </div>     
               </atm-result>
               <atm-noresult search="searchEspeces">Aucune Espèce n'est disponible pour le moment</atm-noresult>
            </atm-search>
          <!-- recherche de l'espece selectionnée pour en extraire ses poissons ordonnés -->
         <atm-search what="{Especes}" name="searchPoissons">
               <atm-search-param search="searchPoissons" type="item" value="{request:int:espece}" mandatory="true" />
            <atm-result search="searchPoissons">
                  <div class="poissons">
                     <!-- recherche paginée des poissons de l'espece selectionnée en conservant leur ordre-->
                <atm-search what="{Poisson}" name="searchPoissonByPage">
                   <atm-search-param search="searchPoissonByPage" type="itemsOrdered" value="{Especes:Poissons:ids}" mandatory="true" />
                  <atm-search-page search="searchPoissonByPage" value="{request:int:page}" />
                  <atm-search-limit search="searchPoissonByPage" value="9" />
                  <atm-result search="searchPoissonByPage">
                      <div class="poisson">
                              {Poisson:Image:imageHTML}
                              <div class="title">{Poisson:Image:label}</div>
                           </div>
                     <atm-if what="{lastresult}">
                        <atm-function function="pages" maxpages="{maxpages}" currentpage="{currentpage}" displayedpage="5">
                            <pages>&nbsp;<a href="{page:self:url}?espece={Especes:id}&amp;page={n}">{n}</a>&nbsp;</pages>
                            <currentpage>&nbsp;{n}&nbsp;</currentpage>
                            <start>&nbsp;<a href="{page:self:url}?espece={Especes:id}&amp;page={n}">&lt;&lt;</a>&nbsp;</start>
                            <previous>&nbsp;<a href="{page:self:url}?espece={Especes:id}&amp;page={n}">&lt;</a>&nbsp;</previous>
                            <next>&nbsp;<a href="{page:self:url}?espece={Especes:id}&amp;page={n}">&gt;</a>&nbsp;</next>
                            <end>&nbsp;<a href="{page:self:url}?espece={Especes:id}&amp;page={n}">&gt;&gt;</a>&nbsp;</end>
                        </atm-function>
                     </atm-if>
                  </atm-result>
                </atm-search>
               
                <!--<atm-loop on="{Especes:Poissons:fields}">
                        <div class="poisson">
                           {Especes:Poissons:Poisson:Image:imageHTML}
                           <div class="title">{Especes:Poissons:Poisson:Image:label}</div>
                        </div>
                     </atm-loop>-->
                     <br/>
                  </div>     
               </atm-result>
               <atm-noresult search="searchPoissons">Aucun Poisson n'est disponible pour le moment</atm-noresult>
            </atm-search>
         </atm-xml>
      </div>
   </block>
</row>


Là encore, j'ai tout fait de tête sans rien tester mais c'est pour te donner une idée du principe. J'ai laissé commenté l'atm-loop pour que tu t'y retrouve par rapport au code du haut, n'hésite pas à l'enlever.


Haut
 Profil  
 
 Sujet du message:
MessagePublié: Mer Avr 08, 2009 4:54 pm 
Hors-ligne

Inscrit(e) le : Sam Mars 07, 2009 2:04 pm
Message(s) : 10
Tu as une bonne tête, Félicitation ! :lol:

Ça fonctionne correctement. Je ne sais pas pourquoi, je pensais que l'on ne pouvait pas imbriquer des search.

Merci pour tes précieuses lumières Sébastien.
:wink:


Haut
 Profil  
 
 Sujet du message:
MessagePublié: Mer Avr 08, 2009 5:25 pm 
Hors-ligne
Administrateur
Avatar de l’utilisateur

Inscrit(e) le : Mer Juin 15, 2005 8:28 am
Message(s) : 759
Localisation : Sophia Antipolis
Ben tu peux imbriquer autant que tu veux les recherches. Il faut par contre faire très attention au niveau des performances car une recherche est quelque chose de lourd à faire et les imbrications entrainent très vite un grand nombre de recherches pour l'affichage d'une page ce qui provoque vite des ralentissements.

Dans ton cas ça n'est pas gênant puisque tu n'as qu'un seul résultat, donc tu n'auras avec cette rangée que 3 recherches au maximum ce qui reste acceptable.

Par contre, il peut-être intéressant pour ta première recherche d'en limiter la portée car à l'heure actuelle, en cherchant toutes les espèces, tu charge du même coup l'ensemble des sous objets (donc l'ensemble des poissons de ton module) ce qui, si tu as des centaines de poisson va vite devenir très lourd.
Pour ça, tu peux remplacer ce tag :
Code :
<atm-result  search="searchEspeces">
 ...
</atm-result>

Par celui là :
Code :
<atm-result  search="searchEspeces" return="POLYMOD_SEARCH_RETURN_OBJECTSLIGHT">
 ...
</atm-result>

Ce qui fera la même chose mais sans charger les sous-objets de l'objet recherché (les poissons donc). Puisque dans ta recherche tu n'utilise pas ces sous-objets poissons, c'est tout à fait adapté.


Haut
 Profil  
 
 Sujet du message:
MessagePublié: Jeu Avr 09, 2009 8:05 am 
Hors-ligne

Inscrit(e) le : Sam Mars 07, 2009 2:04 pm
Message(s) : 10
Pas mal :D
C'est bien pensé ce petit paramètre 8)
Merci encore


Haut
 Profil  
 
Afficher les messages publiés depuis :  Trier par  
Publier un nouveau sujet Répondre au sujet  [ 19 messages ]  Aller vers la page Précédent  1, 2

Le fuseau horaire est UTC [Heure d’été]


Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 29 invité(s)


Vous ne pouvez pas publier de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas insérer de pièces jointes dans ce forum

Recherche de:
Aller vers :  
cron
Powered by phpBB® Forum Software © phpBB Group
Traduit par Maël Soucaze et Elglobo © phpBB.fr