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

    Je suis nouvel utilisateur de ModX et je me suis mis à bricoler un peu.
    En fait je voulais faire un Blog où mes news seraient triées par catégorie. Donc là pas de problème je crée un répertoire blog qui contient différents sous-répertoires (un sous-répertoire par catégorie). Ensuite je mets mes différentes news dans le bon sous-répertoire.

    Sur ma page de départ du blog je veux que toutes les news apparaissent. Là pas de problème non plus je m’en sors avec le code suivant:
    [[NewsListing? &tpl=`NewsTemplate` &summarize=`3` &trunc=`true` &truncLen=`100` &filter=`parent,2,2` &multilevel=`1` &levelLimit=`2` ]]


    je filtre toutes les news qui ne sont pas des catégories (donc qui n’ont pas comme parent l’Id numéro 2 qui est l’Id de mon blog), j’affiche les news à l’intérieur des catégories (en demandant à prendre en compte les sous-niveaux avec multilevel qui a pour valeur 1) et je met la valeur levelLimit à 2 (pour ne pas voir les commentaires)

    Et là je veux pouvoir sur chaque news afficher le titre de la catégorie (c’est-à-dire le titre de ma catégorie) et son id (pour faire un lien-dessus).
    Il faut donc que je récupère les infos du parent. Ensuite je veux utiliser ces infos dans mon template de mise en forme de news en les récupérant directement grâce à des varaibles [+idparent+], [+titleparent+].

    J’ai donc rajouté les lignes suivantes dans le snippet newslisting:
    //on va chercher les informations sur le parent grâce à la fonction getParent
            $parent = $modx->getParent($resource[$x]['id'],1,'id,pagetitle,description,alias,parent');
     //on affecte les valeurs pour qu'elles soient réutilisables
    	$placeholders['[+titleparent+]'] = $parent['pagetitle']);
    	$placeholders['[+descriptionparent+]'] = $parent['description']);
    	$placeholders['[+idparent+]'] = $parent['id']);
    	$placeholders['[+aliasparent+]'] = $parent['alias']);
    	$placeholders['[+parentparent+]'] = $parent['parent']);


    juste après la ligne
    // Set placeholders that can be used in the Chunk


    Ensuite j’utilise le template de news suivant:
    <div id="ResumeBillet">
       <h3>
           <a href="[~[+id+]~]">[+title+]</a>
       </h3>
       <div id="CategorieBillet">
           <span class="TexteCategorie">catégorie:</span>
           <span class="LienCategorie"><a href="[~[+idparent+]~]">[+titleparent+]</a></span>
       </div>
       <div id="TexteResume">
           <span class="Texte">[+summary+]</span>
           <span class="Lien">[+link+]</span>
       </div>
       <div id="DateBillet">
           publié le [+date+]
       </div>
       <div id="LienCommentaire">
           <a href="[~[+id+]~]#comments">
             voir les réactions([[UserCommentsCount?docid=[+id+]]])
           </a>
       </div>
    </div>
    


    ce qui donne

      • 33175
      • 711 Posts
      La modification est sympa. Merci de nous la faire partager smiley
        Sorry for my english. I&#39;m french... My dictionary is near me, but it&#39;s only a dictionary !
        • 30115
        • 8 Posts
        bon ben peut-être qu’il sera donc possible de l’intégrer à une nouvelle version du snippet NewsListing parce que je pense que ça pourrait être intéressant de pouvoir utiliser les variables [+idparent+], [+titleparent+], [+descriptionparent+], [+aliasparent+] et [+parentparent+] (pour avoir le grand-parent !!!) très facilement.

        Ceci dit, peut-être que des gens qui maîtrisent mieux les snippets que moi (et surtout modx) devrait regarder un peu plus près car je ne suis pas un pro en php
          • 33175
          • 711 Posts
          Sauf erreur de ma part, la seule solution qui existe actuellement serait de passer par un plugin qui analyserait chaque page avant de l’afficher. Ce plugin pourrait remplacer un tag spécifique en recherchant la parent puis en mettant les bonnes valeurs à la place. Mais ça demande beaucoup de ressources (dont les requêtes SQL).

          Sinon, en utilisant un snippet par tag, il serait possible de récupérer les informations et de remplacer les éléments voulus. Mais là aussi, c’est très gourmand en ressource car il faut une requête par tag.

          Je pense donc que la meilleure solution est effectivement un hack de newslisting.

          Juste pour information, NewsListing est obsolète depuis quelques jours. Maintenant, il faut utiliser Ditto. En fait c’est le même snippet, avec un nom différent et quelques nouveautés je crois.

          Si quelqu’un une autre idée, c’est toujours bon à prendre smiley
            Sorry for my english. I&#39;m french... My dictionary is near me, but it&#39;s only a dictionary !
            • 6726
            • 7,075 Posts
            Comme le dit Guillaume, utilisez Ditto, modifier NewsListing n’a plus grand intérêt puisque c’est ditto qui est en développement...
              .: COO - Commerce Guys - Community Driven Innovation :.


              MODx est l&#39;outil id