We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 21471
    • 42 Posts
    Hello,

    Quand je fais des sites avec SPIP, pour éviter de copier/coller certaines zones de code que je retrouve partout, je crée des fichiers autonomes que je peux inclure. J’obtiens alors un truc du genre :

    <INCLURE(header.php3)>
    <INCLURE(menu.php3){id_rubrique}>
    <div class="contenu_central>
    <!-- ici ma zone de contenu -->
    </div>
    <INCLURE(footer.php3)>


    Le gros avantage de tout ça se retrouve dans la maintenance des différentes zones de la page wink

    Pour certains sites, pour le squelette d’une page, on obtient alors un fichier article.html contenant :

    <INCLURE(header.php3)>
    <INCLURE(menu.php3){id_article}>
    <INCLURE(contenu_article.php3){id_article}>
    <INCLURE(footer.php3)>


    Peut-on faire pareil avec Modx ? Si oui, comment ?
      • 1876
      • 835 Posts
      Salut

      Ce dont tu parles ressemble à des éléments de template donc à mettre dans un template. rolleyes

      Pour ma part, disons que j’utilise la possibilité d’affecter un template spécifique par document même si beaucoup prefère le template unique pour tous le site.

      Pour un projet en cours, je créer un template spécifique pour la présentation des livres. Cela me permet d’inclure dans la page, en plus du "content" des snippets spécifiques et que je n’utilise que pour l’affichage des livres.

      Ensuite tu peux aussi créer un snippet contenant ton code que tu rappelle dans ta page. Un snippet n’est pas forcement un machine à gaz qui fait le café. Dabs le principe c’est juste du code php.

        • 16732
        • 592 Posts
        Salut NiCoS,

        C’est aussi la fonction première des chunks.

        Par exemple pour ton pied de page tu crées un chunk ’footer’ où tu copie/colle ton html.

        Puis dans ton template tu l’appelles avec {{footer}}

        Maintenant si tu changes le contenu du chunk ’footer’ la modification apportée sera visible sur toutes les pages qui utilisent un template où tu auras inséré {{footer}}

        Les chunks ne doivent pas contenir de code PHP ..... Mais rien ne t’empêche s’insérer un appel à un snippet dans ton chunk grin
          • 1186
          • 202 Posts
          Bonjour NiCoS,

          Si tes bouts de code réutilisables ne sont que du code HTML, tu peux utiliser des chunks, que tu créés via l’interface d’admin dans ressource => chunk, ce qui donne dans ton cas :


          {{HEADER}}
          {{MENU}}
          <div class="contenu_central>
          <!-- ici ma zone de contenu -->
          </div>
          {{FOOTER}}
          

          où les noms entre accolades correspondent au nom du chunk. Ces chunks sont utilisables où tu veux, dans le(s) template(s) associé(s) aux pages comme le dit Aour. Mais ils peuvent aussi bien être utilisés au sein d’un document.

          Si ces contenus sont dynamiques (PHP), tu peux utiliser des snippets, selon le même principe, ce qui donnera un truc du genre ci-dessous, si les header et footer sont du HTML, et si le menu est dynamique :


          {{Header}}
          [[Menu? &parametre1=`` &parametre1=`` ...]]
          <div class="contenu_central>
          <!-- ici ma zone de contenu -->
          </div>
          {{FOOTER}}
          

          Plus d’infos dans la doc : http://modxcms.com/developers-guide.html

          Note : j’ai cru comprendre que chunk et snippet fusionneront à terme dans les futures versions de MODx, dans un seul et même concept pour simplifier la chose.
            R
            • 6726
            • 7,075 Posts
            Je n’aurai pas dit mieux grin

            Sinon, effectivement on avait parlé de supprimer la distinction... disons que le nouveau parser ne la supprime pas, mais donne un degré de contrôle supplémentaire sur les chunks (la possibilité de choisir s’ils doivent être mis en cache ou non). A suivre...
              .: COO - Commerce Guys - Community Driven Innovation :.


              MODx est l&#39;outil id
              • 21471
              • 42 Posts
              Ok, merci pour vos réponses smiley