CMS Automne http://www.automne-cms.org/forum/ |
|
[Résolu] Recherche complexe http://www.automne-cms.org/forum/viewtopic.php?f=2&t=1458 |
Page 1 sur 1 |
Auteur: | arnaud [ Mer Fév 22, 2012 8:43 pm ] |
Sujet du message: | [Résolu] Recherche complexe |
Bonjour à tous, je suis entrain de créer un module permettant de gérer l'affichage d'un planning de concert sur le site d'un festival. Voici la structure de mon module : Objet Artistes :
Objet Scènes :
Objet Jours :
et enfin l'objet Concerts qui lie tout ça ensemble :
Code : <row> <div id="planning_container"> <block module="festival" id="concert_jours" language="fr"> <atm-search what="{Jours}" name="jours"> <atm-search-order search="jours" type="objectID" direction="asc" /> <atm-result search="jours"> <div class="jour"> <h1>{Jours:Date:value}</h1> <atm-search what="{Scenes}" name="scenes"> <atm-search-order search="scenes" type="objectID" direction="asc" /> <atm-result search="scenes"> <div class="scenes"> <h2>{Scenes:Nom:value}</h2> <atm-search what="{Concerts}" name="concerts"> <atm-search-order search="concerts" type="objectID" direction="asc" /> <atm-search-param search="concerts" type="{Concerts:Date:Jours:Date:fieldID}" value="{Jours:Date:value}" mandatory="true" /> <atm-result search="concerts"> <div class="concerts"> [...] </div> </atm-result> </atm-search> </div> </atm-result> </atm-search> </div> </atm-result> </atm-search> </block> </div> </row> En fait, ce que je souhaite c'est afficher un tableau structuré ainsi : Jour1 : xx/xx/xx Scène 1 Artiste1 - 20h30 Artiste2 - 22h30 ... Scène2 ... ... Jour 2 : xx/xx/xx ... ... ... Est-ce que je suis sur la bonne piste ??? Merci pour vos idées |
Auteur: | atm4u [ Jeu Fév 23, 2012 10:10 am ] |
Sujet du message: | Re: Recherche complexe |
Bonjour Arnaud, Cool ton projet. Première question, as tu intégré la notion d'heure dans ton champ date ? car si tu veux organiser tes concerts cela sera plus pratique. De plus, une recherche sur "objectID" n'est pas ce qui a de mieux dans le sens où cela va se faire dans l'ordre de la création des enregistrements et non pas dans l'ordre d'un champ. Par exemple : Code : <atm-search-order search="jours" type="objectID" direction="asc" /> cela va t'afficher les dates dans l'ordre où tu les as ajoutées dans l'administration et non pas de façon chronologique sur la valeur de ton champ date. Il te faudrait : Code : <atm-search-order search="jours" type="{Concerts:Date:fieldID}" direction="asc" /> Bon a ajuster avec les vraies valeurs de ton module. La remarque est valable pour toutes les recherches que tu voudras faire. Je vais pousser plus avant pour la rangée mais j'ai pas l'impression que tu sois sur la bonne piste, mais ton module me semble très bien structuré. |
Auteur: | Sébastien [ Jeu Fév 23, 2012 10:23 am ] |
Sujet du message: | Re: Recherche complexe |
Je n'ai pas le temps de faire l'analyse exacte de ton besoin ni de ta structure de module. Cependant, un truc m'a sauté aux yeux dans ton code : la triple recherche imbriquée sans limite en nombre de résultats ou en filtres. Ça peut fonctionner le pb n'est pas là, mais en terme de perf, ça risque très vite d'être une catastrophe. Essaye d'éviter les imbrications de recherche (ou limite toi) car réaliser une recherche polymod est coûteux en temps. Telle qu'elles sont imbriquées, le nombre de recherche sera exponentiel en fonction du nombre de résultats et c'est vraiment quelque chose à éviter. |
Auteur: | arnaud [ Jeu Fév 23, 2012 10:45 am ] |
Sujet du message: | Re: Recherche complexe |
Merci à vous deux pour vos réponses ! Tout d'abord pour la notion d'heure, j'ai placé un champ heure dans l'objet "Concerts". Je me rend bien compte que les requêtes imbriquées ne doivent pas être la seule solution, mais je n'arrive pas à voir comment afficher tous les concerts en les classant (soit par jour, soit par scènes, soit par artistes...). Ma réflexion de départ était pour la page d'affichage par jour :
Ce qui donnerais :
|
Auteur: | atm4u [ Jeu Fév 23, 2012 11:22 am ] |
Sujet du message: | Re: Recherche complexe |
Ou j'ai vu le champ heure dans ton objet concert, hors ce dernier est une chaine de caractère. Bon c'est pas vraiment bloquant non plus, alors... Par contre, je pense qu'effectivement comme le relève Sébastien, ne pas limiter ta recherche risque d'être problématique si tu as un grand nombre d'enregistrement et également par le fait que ton module est plutot complexe. D'ailleurs, pourquoi la scène est elle un objet multiple. Un concert = plusieurs artistes, plusieurs dates, une heure (donc toujours à la même heure), plusieurs scènes (en même temps ??) Je ne comprends pas cet enchainement de liaisons. Bref j'aurais tendance a faire un sous-objet date avec le jour, l'heure, et la scène... mais je ne sais pas ce que tu veux faire réellement. Pour aller dans le sens de Sébastien, il serait plus simple d'afficher la liste un jour après l'autre, cela limiterait ta recherche et elle s'afficherait plus vite. |
Auteur: | arnaud [ Jeu Fév 23, 2012 12:34 pm ] |
Sujet du message: | Re: Recherche complexe |
Salut atm4u, tu as tout à fait raison, j'étais allé beaucoup trop vite... en fait un concert est composé de 1 ou plusieurs artistes (Multiples Objets Composés) mais effectivement d'une seule date, et d'une seule scène. J'ai recomposé mon Objet "Concerts" comme ceci :
|
Auteur: | atm4u [ Jeu Fév 23, 2012 1:48 pm ] |
Sujet du message: | Re: Recherche complexe |
Du coup, tu n'as pas besoin de faire un objet jour, tu peux laisser un champ date directement dans ton concert. Et de fait ce dernier devient beaucoup plus simple. Je n'ai pas vraiment le temps là (je suis au boulot ) mais j’essaierais de travailler la dessus ce soir pour voir comment afficher les concerts par date et par scène classés par heure |
Auteur: | Frank [ Jeu Fév 23, 2012 2:06 pm ] |
Sujet du message: | Re: Recherche complexe |
Pour les photos et les vidéos, si tu es en version 4.2 tu peux embarquer directement un objet de type media (et donc media externe) dans ton module. Tu le passes en multiples objets Media, comme ça le jour où tu as beaucoup de photos et que tu veux insérer un diaporama, c'est facile. Tu peux aussi définir des catégories dans le module médiathèque et limiter ton objet médias à une catégorie donnée (vidéos, photos, etc.) En tout cas très bon réflexe de partager tes réflexions sur la conception de ton module ici, en plus c'est un exemple intéressant. Bon développement avec Automne |
Auteur: | arnaud [ Jeu Fév 23, 2012 3:07 pm ] |
Sujet du message: | Re: Recherche complexe |
atm4u, merci d'avoir pris le temps de me répondre (du boulot )... J'ai créé l'objet date pour regrouper plus facilement les concerts par jour (peut être à tort...) Merci pour l'idée Frank, par contre, un objet multiple de type media ne me permet d'insérer que des média de la médiathèque (et non des médias externes)... Ou alors, je suis passé à coté. J'ai réussi à produire l'affichage (à peu près) désiré avec la rangé suivante (par contre il y a des requêtes imbriquées...) : Code : <row> <div id="planning_container"> <block module="festival" id="concert_jours" language="fr"> <atm-search what="{Jours}" name="jours"> <atm-search-order search="jours" type="{Jours:Date:fieldID}" direction="asc" /> <atm-result search="jours"> <div class="jour"> <h1>{Jours:Date:value}</h1> <atm-setvar vartype="var" varname="date_jour" value="{Jours:id}" /> <atm-search what="{Scenes}" name="scenes"> <atm-search-order search="scenes" type="objectID" direction="asc" /> <atm-result search="scenes"> <div class="scenes"> <h2>{Scenes:Nom:value}</h2> <atm-setvar vartype="var" varname="scene_jour" value="{Scenes:id}" /> <atm-search what="{Concerts}" name="concerts"> <atm-search-param search="concerts" type="{Concerts:Jours:fieldID}" value="{var:int:date_jour}" mandatory="true" /> <atm-search-param search="concerts" type="{Concerts:Scenes:fieldID}" value="{var:int:scene_jour}" mandatory="true" /> <atm-result search="concerts"> <div class="concerts"> <h3> {Concerts:Heure:value} : {Concerts:Artistes:Artistes:Nom:value} </h3> </div> </atm-result> </atm-search> </div> </atm-result> </atm-search> </div> </atm-result> </atm-search> </block> </div> </row> La rangée affiche pour chaque jour :
EDIT : Le code de ma rangée ci-dessus a une erreur étant donné que dans un concert il peut y avoir plusieurs artistes (Multiples Objets). J'ai donc fais un atm-loop : Code : <div class="concerts"> <h3> {Concerts:Heure:value} : <atm-loop on="{Concerts:Artistes:fields}"> {Concerts:Artistes:Artistes:Nom:value} <atm-if what="!{lastloop}">, </atm-if> </atm-loop> </h3> </div> Du coup, petite question subsidiaire, : Je compte faire un lien sur chaque nom d'artiste vers une page affichant toutes les infos de l'artiste (une fiche artiste), mais je ne trouve pas comment récupérer l'id unique de l'artiste dans la boucle atm-loop... |
Auteur: | Frank [ Jeu Fév 23, 2012 4:03 pm ] |
Sujet du message: | Re: Recherche complexe |
Citer: un objet multiple de type media ne me permet d'insérer que des média de la médiathèque (et non des médias externes)... Oui normal si tu es parti d'une version antérieure à la 4.2, le module médiathèque a été enrichi d'un champ de type media externe. Tu peux tout à fait faire de même sur ton module médiathèque en t'inspirant que ce qui a été fait sur la 4.2 |
Auteur: | arnaud [ Jeu Fév 23, 2012 4:11 pm ] |
Sujet du message: | Re: Recherche complexe |
Ok Frank, je vais m'installer une demo de 4.2 et regarder tout ça ! |
Auteur: | Frank [ Jeu Fév 23, 2012 5:26 pm ] |
Sujet du message: | Re: Recherche complexe |
Arnaud, je ne connais pas exactement tes contraintes, mais en supprimant l'objet date pour l'intégrer directement à l'objet concert, avec de multiples objets Polymod, ça nous donne la structure suivante : > Structure de l'objet 'Concerts' :
|
Auteur: | arnaud [ Lun Avr 16, 2012 10:14 am ] |
Sujet du message: | Re: Recherche complexe |
Bonjour à tous, juste un petit mot pour vous dire (avec du retard...) que le site du festival sur lequel je travaillais est en ligne : http://www.pauseguitare.net Pour infos, voici quelques unes des pages du site qui fonctionnent grâce au module que j'ai créé :
Et en passant, vous êtes les bienvenue sur Albi cet été si ça vous dit ! |
Auteur: | Sébastien [ Lun Avr 16, 2012 11:33 am ] |
Sujet du message: | Re: Recherche complexe |
Très bon travail Tes retours sur l'usage d'Automne sont les bienvenus |
Auteur: | Frank [ Jeu Avr 19, 2012 8:22 am ] |
Sujet du message: | Re: Recherche complexe |
arnaud a écrit: juste un petit mot pour vous dire (avec du retard...) que le site du festival sur lequel je travaillais est en ligne : http://www.pauseguitare.net Hey ça fait plaisir de voir ça, bravo pour cette chouette réalisation |
Page 1 sur 1 | Le fuseau horaire est UTC [Heure d’été] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |