CMS Automne

Forum de la communauté du CMS Automne
Nous sommes actuellement le Dim Avr 28, 2024 9:54 pm

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




Publier un nouveau sujet Répondre au sujet  [ 15 messages ] 
Auteur Message
 Sujet du message: [Résolu] Recherche complexe
MessagePublié: Mer Fév 22, 2012 8:43 pm 
Hors-ligne

Inscrit(e) le : Ven Août 12, 2011 9:17 am
Message(s) : 55
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 :
  • Nom (Chaîne de caractères)
  • Sous-titre (Chaîne de caractères)
  • Style musical (Chaîne de caractères)
  • Présentation (Champ texte)
  • Photo (Image)
  • Liens de l'artiste (Champ texte)
  • Lien Billetterie (Lien)
  • Vidéo Externe (Média externe)
  • Vidéo Interne (Objet 'Média')
  • Titre (Chaîne de caractères)
  • Description (Champ texte)
  • Catégorie (Catégories)
  • Fichier (Fichier)

Objet Scènes :
  • Nom (Chaîne de caractères)
  • Adresse (Champ texte)
  • Coordonnées Google (Coordonnées (Google))
  • Présentation courte (Champ texte)
  • Présentation longue (Champ texte)
  • Photo 1 (Image)
  • Photo 2 (Image)

Objet Jours :
  • Date (Date)

et enfin l'objet Concerts qui lie tout ça ensemble :

  • Artiste(s) (Multiples objets 'Artistes')
    • Nom (Chaîne de caractères)
    • Sous-titre (Chaîne de caractères)
    • Style musical (Chaîne de caractères)
    • Présentation (Champ texte)
    • Photo (Image)
    • Liens de l'artiste (Champ texte)
    • Lien Billetterie (Lien)
    • Vidéo Externe (Média externe)
    • Vidéo Interne (Objet 'Média')
    • Titre (Chaîne de caractères)
    • Description (Champ texte)
    • Catégorie (Catégories)
    • Fichier (Fichier)
  • Date (Multiples objets 'Jours')
    • Date (Date)
  • Heure (Chaîne de caractères)
  • Scène (Multiples objets 'Scènes')
    • Nom (Chaîne de caractères)
    • Adresse (Champ texte)
    • Coordonnées Google (Coordonnées (Google))
    • Présentation courte (Champ texte)
    • Présentation longue (Champ texte)
    • Photo 1 (Image)
    • Photo 2 (Image)
    • Tête d'affiche (Image)
et voici la rangée que j'essai de créer :
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


Haut
 Profil  
 
 Sujet du message: Re: Recherche complexe
MessagePublié: Jeu Fév 23, 2012 10:10 am 
Hors-ligne
Avatar de l’utilisateur

Inscrit(e) le : Sam Fév 12, 2011 5:26 pm
Message(s) : 188
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é.


Haut
 Profil  
 
 Sujet du message: Re: Recherche complexe
MessagePublié: Jeu Fév 23, 2012 10:23 am 
Hors-ligne
Administrateur
Avatar de l’utilisateur

Inscrit(e) le : Mer Juin 15, 2005 8:28 am
Message(s) : 759
Localisation : Sophia Antipolis
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.


Haut
 Profil  
 
 Sujet du message: Re: Recherche complexe
MessagePublié: Jeu Fév 23, 2012 10:45 am 
Hors-ligne

Inscrit(e) le : Ven Août 12, 2011 9:17 am
Message(s) : 55
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 :

  1. Chercher tous les jours existants
  2. Pour chaque jour chercher toutes les scènes
  3. Pour chaque scène chercher les concerts ayant lieu sur la scène ce jour là et afficher en classant par heure (le champ se trouve dans l'Objet "Concerts")

Ce qui donnerais :
  • Jour 1
    • Scène 1
      • 18h00 : Artiste1
      • 20h00 : Artiste2
      • ...
    • Scène 2
      • ...
  • Jour 2
    • Scène 1
      • 18h00 : Artiste3
      • 20h00 : Artiste4
      • ...
    • Scène 2
      • ...


Haut
 Profil  
 
 Sujet du message: Re: Recherche complexe
MessagePublié: Jeu Fév 23, 2012 11:22 am 
Hors-ligne
Avatar de l’utilisateur

Inscrit(e) le : Sam Fév 12, 2011 5:26 pm
Message(s) : 188
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.


Haut
 Profil  
 
 Sujet du message: Re: Recherche complexe
MessagePublié: Jeu Fév 23, 2012 12:34 pm 
Hors-ligne

Inscrit(e) le : Ven Août 12, 2011 9:17 am
Message(s) : 55
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 :

  • Artiste(s) (Multiples objets 'Artistes')
    • Nom (Chaîne de caractères)
    • Sous-titre (Chaîne de caractères)
    • Style musical (Chaîne de caractères)
    • Présentation (Champ texte)
    • Photo (Image)
    • Liens de l'artiste (Champ texte)
    • Lien Billetterie (Lien)
    • Vidéo Externe (Média externe)
    • Vidéo Interne (Objet 'Média')
      • Titre (Chaîne de caractères)
      • Description (Champ texte)
      • Catégorie (Catégories)
      • Fichier (Fichier)
  • Date (Objet 'Jours')
    • Date (Date)
  • Heure (Chaîne de caractères)
  • Scène (Objet 'Scènes')
    • Nom (Chaîne de caractères)
    • Adresse (Champ texte)
    • Coordonnées Google (Coordonnées (Google))
    • Présentation courte (Champ texte)
    • Présentation longue (Champ texte)
    • Photo 1 (Image)
    • Photo 2 (Image)
    • Tête d'affiche (Image)


Haut
 Profil  
 
 Sujet du message: Re: Recherche complexe
MessagePublié: Jeu Fév 23, 2012 1:48 pm 
Hors-ligne
Avatar de l’utilisateur

Inscrit(e) le : Sam Fév 12, 2011 5:26 pm
Message(s) : 188
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


Haut
 Profil  
 
 Sujet du message: Re: Recherche complexe
MessagePublié: Jeu Fév 23, 2012 2:06 pm 
Hors-ligne
Administrateur
Avatar de l’utilisateur

Inscrit(e) le : Jeu Juin 16, 2005 8:05 am
Message(s) : 628
Localisation : Toulouse, France
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 ;)

_________________
Frank
http://www.automne-cms.org


Haut
 Profil  
 
 Sujet du message: Re: Recherche complexe
MessagePublié: Jeu Fév 23, 2012 3:07 pm 
Hors-ligne

Inscrit(e) le : Ven Août 12, 2011 9:17 am
Message(s) : 55
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 :
  • La date du jour
  • Le nom de toutes les salles (Le soucis c'est que ça affiche les salles n'ayant aucun concerts programmé)
  • en dessous de chaque salle, tous les concerts ayant lieu ce jour la dans cette salle

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...


Haut
 Profil  
 
 Sujet du message: Re: Recherche complexe
MessagePublié: Jeu Fév 23, 2012 4:03 pm 
Hors-ligne
Administrateur
Avatar de l’utilisateur

Inscrit(e) le : Jeu Juin 16, 2005 8:05 am
Message(s) : 628
Localisation : Toulouse, France
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

_________________
Frank
http://www.automne-cms.org


Haut
 Profil  
 
 Sujet du message: Re: Recherche complexe
MessagePublié: Jeu Fév 23, 2012 4:11 pm 
Hors-ligne

Inscrit(e) le : Ven Août 12, 2011 9:17 am
Message(s) : 55
Ok Frank, je vais m'installer une demo de 4.2 et regarder tout ça !


Haut
 Profil  
 
 Sujet du message: Re: Recherche complexe
MessagePublié: Jeu Fév 23, 2012 5:26 pm 
Hors-ligne
Administrateur
Avatar de l’utilisateur

Inscrit(e) le : Jeu Juin 16, 2005 8:05 am
Message(s) : 628
Localisation : Toulouse, France
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' :

  • Nom (Chaîne de caractères)
  • Artistes (Multiples objets 'Artiste')
  • Nom (Chaîne de caractères)
  • Sous-titre (Chaîne de caractères)
  • Style musical (Chaîne de caractères)
  • Présentation (Champ texte)
  • Vidéos (Multiples objets 'Média')
    • Titre (Chaîne de caractères)
    • Description (Champ texte)
    • Catégorie (Catégories)
    • Média externe (Média externe)
    • Fichier (Fichier)
  • Photos (Multiples objets 'Média')
    • Titre (Chaîne de caractères)
    • Description (Champ texte)
    • Catégorie (Catégories)
    • Média externe (Média externe)
    • Fichier (Fichier)
  • Billeterie (Lien)
  • Liens Artistes (Champ texte)
  • Scènes (Objet 'Scènes')
    • Nom (Chaîne de caractères)
    • Adresse (Champ texte)
    • Présentation courte (Champ texte)
    • Présentation longue (Champ texte)
    • Localisation (Coordonnées (Google))
    • Photos (Multiples objets 'Média')
      • Titre (Chaîne de caractères)
      • Description (Champ texte)
      • Catégorie (Catégories)
      • Média externe (Média externe)
      • Fichier (Fichier)
    • Tête d'affiche (Objet 'Média')

      • Titre (Chaîne de caractères)
      • Description (Champ texte)
      • Catégorie (Catégories)
      • Média externe (Média externe)
      • Fichier (Fichier)
  • Date (Date)

_________________
Frank
http://www.automne-cms.org


Haut
 Profil  
 
 Sujet du message: Re: Recherche complexe
MessagePublié: Lun Avr 16, 2012 10:14 am 
Hors-ligne

Inscrit(e) le : Ven Août 12, 2011 9:17 am
Message(s) : 55
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 ! :wink:


Haut
 Profil  
 
 Sujet du message: Re: Recherche complexe
MessagePublié: Lun Avr 16, 2012 11:33 am 
Hors-ligne
Administrateur
Avatar de l’utilisateur

Inscrit(e) le : Mer Juin 15, 2005 8:28 am
Message(s) : 759
Localisation : Sophia Antipolis
Très bon travail :D
Tes retours sur l'usage d'Automne sont les bienvenus :wink:


Haut
 Profil  
 
 Sujet du message: Re: Recherche complexe
MessagePublié: Jeu Avr 19, 2012 8:22 am 
Hors-ligne
Administrateur
Avatar de l’utilisateur

Inscrit(e) le : Jeu Juin 16, 2005 8:05 am
Message(s) : 628
Localisation : Toulouse, France
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 ;)

_________________
Frank
http://www.automne-cms.org


Haut
 Profil  
 
Afficher les messages publiés depuis :  Trier par  
Publier un nouveau sujet Répondre au sujet  [ 15 messages ] 

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


Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 17 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