Eviter le doublon d’affichage de posts

  • Statut : non résolu
10 sujets de 1 à 10 (sur un total de 10)
  • Auteur
    Messages
  • #456099
    Adicie
    Participant
    Initié WordPress
    24 contributions

    Bonjour,

    Ma configuration WP actuelle
    – Version de WordPress :
    2.31
    – Thème utilisé :
    Mimbo
    – Plugins en place :
    – Nom de l’hebergeur :
    Hiwit
    – Adresse du site :
    Adicie
    Problème(s) rencontré(s) :

    J’affiche en homepage les derniers billets parus, ainsi que les derniers billets par catégorie.
    Du coup, j’ai des doublons puisque le billet affiché dans “derniers articles parus” est aussi affiché pour sa catégorie.

    Voici mon code pour les derniers articles parus :

    <?php _e('Derniers articles parus'); ?></h3>
    <?php query_posts('showposts=3'); ?>
    	<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
    <?php the_date('j F Y') ?> par <?php the_author() ?> <br />
    <a href="<?php the_permalink(); ?>” title=”<?php the_title() ?>” class=”title”><?php the_title() ?></a>
    <?php the_excerpt(); ?> 
    [ <a href="<?php the_permalink() ?>” rel=”bookmark” title=”Lien permanent vers <?php the_title(); ?>“>Lire la suite</a> ]<br /><br />
    	<?php endwhile; endif; ?>

    et pour l’affichage des billets par catégorie :

    <?php 
    // this is where the Politique module begins	  
    	query_posts('showposts=2&cat=10'); ?>
        <h3><?php 
    	// this is where the name of the Politique category gets printed	  
    	wp_list_categories('include=10&title_li=&style=none'); ?></h3>
        <?php while (have_posts()) : the_post(); ?>
        <div class="feature"><a href="<?php the_permalink() ?>” rel=”bookmark” title=”Lien permanent vers <?php the_title(); ?>“></a><a href="<?php the_permalink() ?>” rel=”bookmark” class=”title”>
          <?php 
    // this is where title of the Politique gets printed	  
    	  the_title(); ?></a>
              <?php 
    // this is where the excerpt of the Politique gets printed	  
    	the_excerpt(); ?>
        [ <a href="<?php the_permalink() ?>” rel=”bookmark” title=”Lien permanent vers <?php the_title(); ?>“>Lire la suite</a> ]     
          </div>
        <?php endwhile; ?>

    J’ai beau chercher et je ne trouve nulle part comment fabriquer une boucle qui dirait que si le billet est paru dans “derniers articles parus”, alors il ne faut pas l’afficher ailleurs.

    Merci de votre aide et bon réveillon 😉

    #617402
    Adicie
    Participant
    Initié WordPress
    24 contributions

    up !

    Personne n’a de solution pour moi ? :(

    #617403
    dlo
    Participant
    Maître WordPress
    1852 contributions

    Pas de solution évidente et simple, en tout cas !
    Il faudrait stocker les IDs des articles récupérés lors de la première boucle dans un tableau, comparer ceux-ci avec les IDs des articles récupérés dans les boucles par catégorie et afficher l’article si son ID n’est pas dans le tableau.
    Par contre, il faudra modifier les paramètres showposts pour être certain d’avoir toujours 1 article à afficher par catégorie.

    Cordialement

    #617404
    Adicie
    Participant
    Initié WordPress
    24 contributions

    Ah ok :(
    Je pensais qu’il y avait juste une bidouille au niveau du query_posts, mais ça se complique quand je te lis.
    Dommage.

    #617406
    Malaiac
    Participant
    Chevalier WordPress
    148 contributions

    d’accord avec dlo, il n’y pas tellement d’autre solution simple

    </h3>
    
      ID;
    …

    
        <h3></h3>
        ID)) continue;
    else $post_counter++;
    …l’affichage du billet…
    if($post_counter > 2) break;
        

    #617407
    Adicie
    Participant
    Initié WordPress
    24 contributions

    Salut Mala 😉

    Sur un “autre” forum, on m’a filé un lien vers http://codex.wordpress.org/The_Loop où il semble qu’il y ait la solution, mais j’ai du mal à m’en dépatouiller
    Chercher dans la page “The catch is that no post should appear in both categories.”

    have_posts()) : $my_query->the_post();
      $do_not_duplicate = $post->ID;?>
        <!-- Do stuff... -->
      
        <!-- Do other stuff... -->
      ID == $do_not_duplicate ) continue; update_post_caches($posts); ?>
       <!-- Do stuff... -->
      

    #617408
    dlo
    Participant
    Maître WordPress
    1852 contributions

    Ah, Ah, Ah… 😆 C’est exactement la même solution que celle que je préconise et que Malaiac vient de te développer fort obligemment.

    Je deviens aussi fort que le Codex, waaaooh !😉

    #617409
    tampons encreurs
    Membre
    Initié WordPress
    47 contributions
    Adicie wrote:
    J’ai beau chercher et je ne trouve nulle part comment fabriquer une boucle qui dirait que si le billet est paru dans “derniers articles parus”, alors il ne faut pas l’afficher ailleurs.

    Le plus simple serait alors de ne pas afficher tous les articles sur la page principale mais plutôt de limiter l’affichage des articles d’une catégorie particulière, et d’éviter que les articles appartiennent dans deux catégories mutuellement exclusives.

    Tu peux alors avoir une hiérarchie des catégories telles que :

    Catégories en vrac
    catégorie A1
    catégorie A2
    catégorie A3
    catégorie A4
    etc.
    Catégories mutuellement exclusives
    catégorie B1
    catégorie B2
    catégorie B3
    catégorie B4

    Les “catégories mutuellement exclusives” peuvent alors servir au découpage web de tes pages, de sorte à éviter tout contenu dupliqué, alors que les “catégories en vrac” sont celles que tu affiches sur ton blog comme catégories légitimes de tes articles.

    Par ailleurs, si ton problème est d’éviter le contenu dupliqué, tu peux utiliser des plugins tels que All in One SEO Pack qui permet d’indiquer aux moteurs de recherche de ne pas référencer certaines pages de ton blog, ou encore Google Sitemap XML qui permet d’associer un “poids” indiquant l’importance aux principaux moteurs de recherche, de sorte à limiter l’impact du contenu dupliqué.

    #617405
    Adicie
    Participant
    Initié WordPress
    24 contributions
    tampons encreurs wrote:
    Le plus simple serait alors de ne pas afficher tous les articles sur la page principale mais plutôt de limiter l’affichage des articles d’une catégorie particulière, et d’éviter que les articles appartiennent dans deux catégories mutuellement exclusives.

    C’est ce que le template proposait à l’origine, mais les visiteurs du blog m’ont demandé d’afficher les derniers articles parus en home, d’où l’émergence du problème.

    tampons encreurs wrote:
    Par ailleurs, si ton problème est d’éviter le contenu dupliqué

    Logiquement, je me suis débarassé déjà de ce problème. Pour l’instant, c’est seulement l’affichage des doublons en page d’accueil qui me préoccupe.
    Par contre, merci pour la priorité SiteMap, je n’avais pas vu cette option ma foi fort utile.

    #617410
    Adicie
    Participant
    Initié WordPress
    24 contributions

    Désolé de vous remettre à contribution, mais j’arrive à rien :(

    Voici comment j’ai modifié mon code

      <div class="feature clearfloat" id="lead">
    <h3></h3>
      ID == $do_not_duplicate ) continue; update_post_caches($posts); ?>
     par  <br />
    <a href="” title=”” class=”title”></a>
     
    [ <a href="” rel=”bookmark” title=”Lien permanent vers “>Lire la suite</a> ]<br /><br />
    	 
      </div><!--END FEATURE-->
    
    
      <div id="leftcol">
    
        <h3></h3>
        have_posts()) : $my_query->the_post();
      $do_not_duplicate = $post->ID; ?>
        <div class="feature"><a href="” rel=”bookmark” title=”Lien permanent vers “></a><a href="” rel=”bookmark” class=”title”>
        </a>
        
        [ <a href="” rel=”bookmark” title=”Lien permanent vers “>Lire la suite</a> ]
        </div>
    	

    J’ai toujours un doublon qui s’affiche…

10 sujets de 1 à 10 (sur un total de 10)
  • Vous devez être connecté pour répondre à ce sujet.