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

    Comme spécifier dans le titre, comment éviter les doublons sur une même page ?
    Exemple : Sur la même page qu'un article, j'ai un getresources qui va chercher les 5 derniers articles de la même rubrique, comment éviter que l'article présent apparaisse dans les résultats ?
    De la même façon, comment éviter les doublons dans les résultats de plusieurs getresources sur la même page?

    Merci d'avance pour votre aide
      • 39619
      • 11 Posts
      J'ai été un peu vite pour la première question et l'exclusion de l'article principal d'une page dans un getresources. La propriété
      &resources=`-[[*id]]` 
      est parfaite.

      En revanche, cela ne règle pas le problème des doublons multiples.
      Si j'utilise la propriété &limit=`5` pour afficher les 5 derniers articles (id = 1,2,3,4 et 5).
      Si je relance ce même getresources dans la même page avec la même propriété &limit=`5`, comment afficher les 5 articles suivants (id = 6,7,8,9 et 10) ?

        • 33976 ☆ A M B ☆
        • 571 Posts
        Bonjour rdsmath09,

        Pour cela il te faudra regarder du côté du paramètre &offset (documentation de getResources).

        Dans ton cas, je dirais donc :

        [[getResources? &limit=`5` &resources=`-[[*id]]` &offset=`1` ....]]
        


        En espérant que cela réponde à la question smiley
          • 39619
          • 11 Posts
          Salut Romain,
          J'attendais ta réponse vu que tu sembles être le plus actif sur ce forum smiley
          Cette propriété ne me donne pas entièrement satisfaction.

          Si je fais un premier getresources :
          [[getResources? &limit=`5` ...]]


          Si je fais un deuxième getresources identique, il faut en effet inclure la propriété &offset=`5` pour éviter que les 5 précédents articles ne s'affichent à nouveau ! Mais cela enlève simplement les 5 premiers articles de la seconde recherche !

          Dans le cas où j'ai 2 getresources qui se récoupent dans les résultats de manière aléatoire, cela ne marche pas !
          Est ce que tu comprends ma problématique ?

          Merci
          Mathieu
            • 33976 ☆ A M B ☆
            • 571 Posts
            Effectivement. Dans ce cas, la seule solution que je vois (pour le moment) est le développement d'un snippet te retournant les IDs (en dur ou dans un placeholder) des ressources affichées dans ton premier appel.

            Le but étant de pouvoir exclure ces ressources de ton second appel getResources.
              • 39619
              • 11 Posts
              Est-il possible d'afficher les premiers résultats dans un placeholder, puis de les exlure d'un second getresources via la propriété "resources" ?

              &resources=`-[[+variable_placeholder]]`
                • 33976 ☆ A M B ☆
                • 571 Posts
                Oui, mais l'affichage, à ma connaissance, ne peut se faire que dans un placeholder (avec le paramètre &toPlaceholder) ou en "brut", mais pas les 2 à la fois.

                Cela engendrerait donc 2 appels getResources identiques, à l'exception du &tpl et de l'affichage (ce qui me paraît être un peu trop "gourmand" pour le coup).
                  • 39619
                  • 11 Posts
                  Oui, en effet, ça devient un peu lourd...
                  Sous spip, il y avait cette propriété :

                  {doublons nom_boucle} retire les éléments déjà affichés par une boucle précédente avec un critère doublons du même nom.

                  C'est une propriété trés utilisée en général dans les sites...
                  Je vais voir pour créer un snippet rapidement, ce qui sera sans doute le plus simple par la suite.

                    • 33976 ☆ A M B ☆
                    • 571 Posts
                    Je pense effectivement que cela serait la meilleure décision.
                    Pour moi getResources est un snippet qui fait un peu trop de choses à la fois (du moins qui est très flexible), au prix d'une certaine lourdeur.

                    Ceci dit, ton besoin pourrait faire l'objet d'une feature request ^^ (cf. Github).

                    Bon courage