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

    même si j’arrive a afficher se que je dont j’ai besoins, je me demande si ma façon appréhender MODx est correcte ou si je dénature son utilisation. Ça ne fait que 2 semaines que j’utilise MODx et j’aimerais partir sur des bonnes bases. Après les mauvaises habitudes sont difficile à perdre.

    Je vous décris mon besoins et ensuite comment j’ai organiser mon site:

    Je souhaite rendre le plus souple possible les pages du site et donc avoir plusieurs blocs de contenu différents et avoir la possibilité de les afficher dans l’ordre que je souhaite. Bien sur l’utilisateur final du BO ne doit pas avoir à rajouter des balises MODx dans le contenu de la page.

    Pour arriver à ce résultat je me suis dit que les chunks sont la bonne solution. Par contre pour ne pas obliger l’utilisateur à rajouter des appels de chunks dans le contenu de la page (et c’est la ma grande interrogation) j’ai trouvé ce système :
    Dans l’arborescence des ressources, les pages contiennent des enfants qui représente les blocs et aux quelles ont associé le template du bloc correspondant. Les ressources "Bloc" ne sont pas visible au menu.

    Pour afficher la page j’utilise une version modifié de getResources pour inclure la liste des enfants, récupérer le nom du template associé et l’utiliser pour inclure le chunk du même nom. En classant les templates par catégorie, je peux même créer des enfants destinés à être afficher sur une colonne de gauche/droite, dans un footer ...

    Que pensez vous de ce système ? Existe t-il une façon plus simple de le faire ?

    Merci de m’avoir lu jusqu’ici et je suis preneur de toutes remarques, questions ... et réponses wink




    • Bonjour YingYan,

      Tout d’abord, il n’y a pas de « mauvaise » façon d’appréhender MODX, juste des façons plus optimales que d’autres, et seul le temps, l’expérience (et les erreurs!!) te permettront d’optimiser ton workflow smiley

      Ensuite…
      Jusqu’à peu, j’utilisais une méthode semblable pour gérer des « zones » de page. Il est très tentant (et facile) d’utiliser la création de ressources enfants dans ce but. Cependant, j’ai rencontré quelques soucis :


      • pour certains utilisateurs non « techies », cela devient un peu (trop?) abstrait (une ressource = une page et/ou un élément de page… de quoi semer la confusion dans leurs esprits)
      • l’arborescence peut très vite devenir difficile à utiliser
      • même avec une bonne personnalisation de l’interface (cacher ces ressources des menus, ne pas les rendre visibles dans les SERPs…), il arrive toujours des soucis (Murphy’s law!)

      Maintenant, si tu es le seul utilisateur/éditeur du site, ces arguments ne sont pas forcement des plus pertinents…
      Du coup, je pars maintenant du principe que si mon contenu n’est pas l’objet d’une page dédiée, ce n’est pas une ressource.

      Pour gérer mes « blocs » de colonne, je bosse sur un extra, Asides, qui permet aux éditeurs de créer des chunks avec un RTE (et donc sans passer par l’onglet éléments) et de choisir quels chunks afficher lors de l’édition des ressources.
      L’édition est encore un peu légère, mais je vais essayer d’améliorer cela dès que possible.
      Cette méthode, couplée à MIGX, devrait permettre d’ajouter encore plus de souplesse pour gérer du contenu de page (chose à laquelle je n’avais pas pensé… et sur laquelle je me pencherais)

      Encore une fois, ce n’est que ma vision des choses et elle me convient (pour le moment)… mais cela ne sera peut-être pas ton cas smiley
        • 36362
        • 9 Posts
        Je vais regarder ton plugin qui me semble intéressant.

        Mais comment fait tu pour les blocs de contenu dans le corps de ta page ?
        Sur le même principe il faut créer un plugin pour chaque type de blocs ?

        Merci.

        • Non, pas du tout. Si le contenu n’a pas sa place dans [[*content]], j’utilise des TVs (bien que la core team préconise les TVs pour la mise en page plutôt que pour le stockage de contenu).

          Par exemple (une page en cours… pas forcement clean clean)
          [[$head]]
          [[$header]]
          
              <div id="container">
                  <div id="content">
                      <div id="mcontent_top"></div>
          
                      <div id="mcontent">
                          <article>
                              <h1 class="titre">[[*longtitle]]</h1>
          
                              <img src="[[*devanture:phpthumbof=`w=571&h=250&zc=1&f=jpeg`]]" alt="[[*pagetitle]] - photo" /> <!-- TV de type image (photo du magasin) -->
          [[*content]] <!-- le contenu -->
          <hr />
          [[*store-content]] <!-- une TV de type richtext pour que l'utilisateur puisse place des informations sur les horaires d'ouverture du magasin -->
          <hr />
                          </article>
                      </div>
          
                      <div id="mcontent_bottom"></div>
                  </div>
          
          
                  <div id="sidebar">
          [[$nav]] <!-- navigation (Wayfinder) -->
                      <aside id="aside">
          [[getCache@aside?chunks=`[[*aside]]`]] <!-- les blocs de colonne -->
                      </aside>
                  </div>
          
              </div>
          [[$footer]]
          [[$js]]
          


          Et un exemple de chunk ( [[$head]] )

          <!doctype html>
          <!--[if lt IE 7 ]> <html class="no-js ie6" lang="[[++cultureKey]]"> <![endif]-->
          <!--[if IE 7 ]> <html class="no-js ie7" lang="[[++cultureKey]]"> <![endif]-->
          <!--[if IE 8 ]> <html class="no-js ie8" lang="[[++cultureKey]]"> <![endif]-->
          <!--[if (gte IE 9)|!(IE)]><!-->
          <html class="no-js" lang="[[++cultureKey]]">
          <!--<![endif]-->
          <head>
            <meta charset="[[++modx_charset:lcase]]" />
          
            <title>[[*longtitle]]</title>
          [[getCache@meta? &language=`[[++cultureKey]]`]]
          
            <meta name="viewport" content="width=device-width, initial-scale=1.0">
          
            <link rel="apple-touch-icon" href="apple-touch-icon.png" />
          
            <link rel="stylesheet" href="[[++assets_url]]web/css/master.css" />
            <link rel="stylesheet" href="//fonts.googleapis.com/css?family=Lora:regular" />
          [[*rss]] <!-- TV textarea pour ajouter des flux RSS par page, au besoin (on peut faire de la même façon pour les CSS) -->
            <script src="[[++assets_url]]web/js/libs/modernizr-2.0.4.js"></script>
          <!--[if lt IE 9]>
            <script src="//ie7-js.googlecode.com/svn/version/2.1(beta4)/IE9.js"></script>
          <![endif]-->
            <link rel="sitemap" type="application/xml" title="Sitemap" href="sitemap.xml" />
          </head>
          <body>
          


          Après, comme tout dépend de ton design (et des besoins de flexibilité). Si tu as un design/wireframe sous le coude (et si tu le souhaites), je peux essayer de te proposer la « découpe »/structure que j’utiliserais (ce qui n’est pas forcement garant de qualité/bonne pratique ^^)

          Edit: un peu de lecture (en anglais) sur quelques méthodes/stratégies de templating :