We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 10388
    • 59 Posts
    Bonjour à tous et désolé pour ma question qui peut paraitre simpliste pour vous mais j’ai pas réussi à m’en sortir.

    voila je suis en train de migrer un site existant sous modx et dans ce site j’avais développer un système permettant de créer des fiches rangées par rubriques.
    pour l’exemple voir ici :
    http://www.duo-evenement.fr/annuaire.php

    Je me suis dit que j’allais redévelopper l’annuaire pour profiter des urls simples et des alias disponibles dans Modx.

    J’ai donc créer un répertoire annuaire dans lequel je met des sous-repertoires (par exemple : coiffeur, restaurant, bijouterie, etc...) chacun des ces sous-repertoires contiennent plusieurs documents spécifiques à chaque commercant.

    Tout ca est bien beau mais après pour afficher tout ca, ca se complique.
    J’ai creusé deux pistes : ditto et wayfinder.

    Alors pour Ditto, je ne comprends pas comment marche la recursivité, en effet j’ai besoin de partir d’un répertoire précis et que Ditto parcourt les sous-répertoires et les documents (avec un template différent s’il s’agit d’un sous-repertoire ou d’un document final).

    Pour WayFinder j’accède à tout mais ca ne m’affiche qu’un pauvre lien..

    Alors comment faire pour gérer cela avec modx ?

    Merci de vos réponses.
    Gaëtan
      site de l’agence Internet Avalon : http://www.avalon-internet.fr
      • 23050
      • 1,842 Posts
      Salut Gaëtan,

      C’est exactement l’architecture que j’ai pour l’annuaire de Déco’In : des rubriques contenant des fiches "annonceurs".

      C’est pas dur à faire, suffit de comprendre Ditto.

      Dans chaque rubrique, tu fais ton appel Ditto pour lister les annonceurs de la rubrique en cours :
      [[Ditto? display=`all` &tpl=`listing-annonceurs`]]

      Par défaut, &parents=`[*id*]` donc pas la peine de le préciser : tu vas récupérer les enfants de la rubrique sur laquelle tu trouves.
      Par défaur, &depth =`1` donc Ditto va aller chercher uniquement les enfants de premier niveau (à la racine de ta rubrique donc). Si tu avais eu des sous-sous-rubriques, il aurait été nécessaire de mettre &depth=`2`

      Ensuite, dans ton &tpl listing-annonceurs (qui est un chunk) tu définis le modèle à utiliser pour afficher chaque annonceur listé. Sur Déco’In, j’utilise à peu près :

      <div class="liste-annonceurs">
      	<img src="[+AnnonceurPhoto+]" alt="[+title+]"width="200" />
      	<h3><a href="[~[+id+]~]" title="[+title+]">[+title+]</a></h3>
      	<p>[+introtext+]</p>
      	<br class="clear" />
      </div>


      Ainsi, chaque fiche annonceur est atteignable grâce au lien.

      La fiche de l’annonceur est ensuite mise en page de manière classique : avec un template. Ditto n’intervient plus, tu ne fais qu’afficher le document en cours.

      J’espère que j’ai été claire wink
        • 10388
        • 59 Posts
        oui merci Perrine c’est extrèmement clair, je vais essayer ta solution.

        Pour l’instant j’ai trouvé une solution sans utilisé Ditto et en développant des petits bouts de snippets qui me permettent d’avoir un affichage spécifique en fonction de la profondeur : sous-rubrique ou fiche commercant..

        Je vais aller voir ton site pour voir le fonctionnement, mais je mettrais en ligne ici ce que j’ai fais pour voir si c’est fait correctement..

        merci en tous cas.

        Gaëtanpat

        Ps: en tous cas plus je découvre Modx plus je me dis que c’est l’outil que je cherchais depuis quelques années.
          site de l’agence Internet Avalon : http://www.avalon-internet.fr
          • 10388
          • 59 Posts
          Bon voilà comment je procède :

          j’ai crée un répertoire nommé fiches annuaire.
          dans ce répertoire je crée autant de sous-repertoire que souhaités (modifiable par l’utilisateur du site), appellés par exemple : Ameublement, Accessoire festif, etc..
          Ensuite dans tout ces répertoires j’ai des fiches commerçants (des documents modx).

          Pour le code,

          j’ai créé une page annuaire dans laquelle j’ai mis l’appel à un snippet comme ceci :
           [!Sommaire_annuaire?  !] 
          .

          dans le snippet Sommaire_annuaire, on trouve le code suivant :
          <?php
          $rubrique = 55;
          $active=1;
          $deleted=0;
          $commercants = $modx->getDocumentChildren($rubrique, $active, $deleted, 'id');
          
          echo "<table border='0' cellpadding='0' cellspacing='2'>";
              echo "<tr>"; //ligne 1
              
          
          for($i=0; $i<sizeof($commercants);$i++) {
               $id_doc = $commercants[$i]['id'];
               $nom_commercant = $modx->getDocument($id_doc, 'pagetitle');
               $alias_commercant = $modx->getDocument($id_doc,'alias');
               $lien = "<a class='btRub' href=\"".$alias_commercant['alias'] ."\">".$nom_commercant['pagetitle']."</a>";
                echo "<td class='btRub' width='152' height='48'>$lien</td>";
                  $nbCellules++;
                  if($nbCellules == 3) { echo "</tr><tr>"; $nbCellules=0;}
              
           //echo "<br/>"; echo $lien;
          }
          
            echo "</tr>";
            echo "</table>";
          ?>
          


          Ce snippet génère l’ensemble des liens vers les sous-rubriques.

          Ensuite dans page des sous-rubriques, je met l’appel au snppet suivant [!Rubrique? &rubrique=`[*id*]` !].
          dans le snippet suivant Rubrique, on trouve le code suivant :
          <?php
          //recup de l'id de la rubrique
               
               echo "<h1>L'annuaire des prestataires duo</h1>";
               echo "<h2>Découvrez la fiche produit de notre sélection, en cliquant sur l'icône de notre prestataire vous y découvrirez ses spécificités</h2>";
              //param
             
          $rubrique = isset($rubrique)? $rubrique:0;
          $active=1;
          $deleted=0;
          $commercants = $modx->getDocumentChildren($rubrique, $active, $deleted, 'id');
          
          for($i=0; $i<sizeof($commercants);$i++) {
               $id_doc = $commercants[$i]['id'];
               $nom_commercant = $modx->getDocument($id_doc, 'pagetitle');
               $alias_commercant = $modx->getDocument($id_doc,'alias');
               $lien = "<a href=\"".$alias_commercant['alias'] ."\">".$nom_commercant['pagetitle']."</a>";
               echo "<br/>"; echo $lien;
          }
          ?>
          

          Ainsi le snippet Rubrique génère la liste des liens des commercants de la rubrique.
          Ensuite la fiche commercant est un document simple.

          Cette méthode fonctionne et permet de gérer toute la mise en page et le contenu simplement.

          Par contre j’aimerai l’avis de pro sur cette solution par rapport à l’utilisation de Ditto.

          Gaëtanpat
            site de l’agence Internet Avalon : http://www.avalon-internet.fr
            • 23050
            • 1,842 Posts
            Salut Gaëtan,

            Alors, je vais être mal placée pour te dire si tes snippets sont bons car je ne connais pas le PHP.

            M’est avis que maintenant que tes snippets sont faits, tu peux bien sûr les garder... mais Ditto permettait de faire la même chose sans passer par la case DEV wink
              • 10388
              • 59 Posts
              Salut Perrine et MERCI pour tes lumières..

              effectivement, j’ai tout remis à plat et j’utilise maintenant Ditto.. et ca marche sans soucis ! Ditto est assez impressionnant et souple.

              J’avoue avoir un bien meilleur regard sur Modx et j’avoue que je suis assez impressionné.. notamment par les variables de modèles et les possibilité offertes par les snippets et chunks.

              Le seul point noir est le fonctionnement de modification des templates, chunks, snippets que je trouve un peu lourd. Je préfèrerais pouvoir éditer directement les fichiers avec un éditeurs extérieurs (à moins que cela soit possible mais je n’ai pas trouvé..)

              En tous cas, je mettrai ici en ligne le site web sous modx..

              Gaëtanpat
                site de l’agence Internet Avalon : http://www.avalon-internet.fr
                • 11975
                • 2,542 Posts
                salut,

                on peut utiliser des fichiers externes pour les templates de Ditto et qq snippets.
                Pour Ditto, &tpl=`@FILE:assets/etcetera/montpl.tpl`

                :-)
                  Made with MODx : [url=http://www.copadel.com]copadel, fruits et l
                  • 10388
                  • 59 Posts
                  en fait le petit reproche que je fais c’est que par exemple pour un template, on est obligé de travailler dans la fenêtre du formulaire et que l’on peut pas éditer cela dans un éditeur syntaxique HTML avec coloration du code.. mais bon ou alors j’ai pas trouvé le fichier correspondant à mon template dans le système de fichier de modx...

                  mais je précise bien que c’est un petit defaut.. le reste à l’air très très bien

                  Gaëtanpat
                    site de l’agence Internet Avalon : http://www.avalon-internet.fr
                    • 11975
                    • 2,542 Posts
                    Pour la coloration syntaxique il y a le plugin codepress.

                    :-)
                      Made with MODx : [url=http://www.copadel.com]copadel, fruits et l
                      • 10388
                      • 59 Posts
                      j’ai honte mais allez j’abuse : où puis-je trouver ce ’tit plug-in ?

                      rolleyes

                      arff j’ai trouvé, installé mais j’ai une belle erreur... enfin bon je vais creuser un peu.. merci


                      ca y est j’ai trouvé.. c’est vrai que ca aide mais bon assez loin de valoir un bon editeur html/php/css qui te donne les balises possibles, les attributs et tout et tout...
                        site de l’agence Internet Avalon : http://www.avalon-internet.fr