Archives FluxBB.fr

Les archives de FluxBB.fr

Vous n'êtes pas identifié(e).

#1 28-12-2006 20:34:10

bertimus
Membre

Eviter duplication de contenu - Récupérer ID des sujets dans index.php

Hello,

Bon voilà, je me rends compte que punbb crée par défaut des duplications de contenu et ça, google il aime pas du tout roll.

Prenons un exemple concret sur ce forum :

http://www.punbb.fr/forums/viewtopic.ph … 937#p31937 mène exactement au même message que http://www.punbb.fr/forums/viewtopic.php?id=3999#p31937 bien que pid et id soient 2 variables différentes.
Le problème c'est que ces 2 url sont ainsi reconnues par google comme 2 pages distinctes par google... on est d'accord jusque là ? Ben voui, mais ça, c'est justement une duplication de contenu sad

Mon envie : empêcher ceci tongue

Ma limite, je ne suis pas une vedette de MySQL ni de php.

Alors bon, j'ai réussi à faire le nécessaire sur viewforum.php en remplaçant (ligne 148) :

$last_post = '<a href="viewtopic.php?pid='.$cur_topic['last_post_id'].'#p'.$cur_topic['last_post_id'].'">'

par

$last_post = '<a href="viewtopic.php?id='.$cur_topic['id'].'.html#p'.$cur_topic['last_post_id'].'">

OK, ça, ça marche nickel. (vous pouvez tester ceci en cliquant sur le lien vers le dernier message ici)
Maintenant sur index.php c'est pas si simple... la ligne en cause est :

$last_post = '<a href="viewtopic.php?pid='.$cur_forum['last_post_id'].'#p'.$cur_forum['last_post_id'].'">

et si je fais la même modif que là précédente, avec par exemple :

$last_post = '<a href="viewtopic.php?id='.$cur_topic['id'].'#p'.$cur_forum['last_post_id'].'">

ou encore par

$last_post = '<a href="message-'.$cur_forum['id'].'.html#p'.$cur_forum['last_post_id'].'">

Eh bien ça ne passe pas. je suppose que c'est normal et que c'est pas bien de remplacer un "cur_forum" par un "cur_topic" ou un id de forum par un id de topic...

Ma question donc : quelle est la modif' à réaliser pour que ça passe et qu'ainsi dans mon exemple http://www.punbb.fr/forums/viewtopic.ph … 937#p31937 se transforme en http://www.punbb.fr/forums/viewtopic.php?id=3999#p31937 ? [Ce qui permettra de faire disparaître tout risque de duplication de contenu]

Merci pour votre future aide.

Bertrand

J'ai édité : j'avais mal recopié mes modifs (vu que sur mon site j'ai rewrité le tout...)

Dernière modification par bertimus (29-12-2006 03:37:56)

Hors ligne

#2 28-12-2006 23:01:21

vin100
Membre

Re : Eviter duplication de contenu - Récupérer ID des sujets dans index.php

Salut,

Déjà pour bien démarrer, dans ce que tu as fait j'ai l'impression que tu mélange identifiant de topic et identifiant de post, évidément non ça ne s'intervertie pas comme ça

topic = tid = une discussion entière
post = pid = un message seulement

à mon avis pour éviter ce genre de chose c'est de squizer les pid et n'utiliser que les tid puisque c'est l'identifiant de la discussion qui est important et puis après pour faire le lien vers le message en particulier utiliser le #pid

Hors ligne

#3 29-12-2006 01:15:23

bertimus
Membre

Re : Eviter duplication de contenu - Récupérer ID des sujets dans index.php

Hum écoute on est d'accord wink

Non j'ai bien compris la différence entre tid et pid et effectivement je veux quelque chose de la forme ..tid.html#pid

Bon j'ai pas compris "squizer" par contre wink

Bref, je veux bien modifier le bout de code suivant tiré de index.php :

...viewtopic.php?pid='.$cur_forum['last_post_id']...

J'ai tenté

...viewtopic.php?id='.$cur_forum['tid']...

ou encore

...viewtopic.php?id='.$cur_topic['tid']...

mais ça ne passe pas, comment faire concrètement ?

Dernière modification par bertimus (29-12-2006 01:24:42)

Hors ligne

#4 29-12-2006 01:59:59

vin100
Membre

Re : Eviter duplication de contenu - Récupérer ID des sujets dans index.php

ok je vois, et bien en regardant rapidement comme ça y'a pas trop de solution car la requête utilise les colonnes last_* de la table forums et y'a pas le topic d'enregistrer

il faut donc modifier la requête je sais pas comment

mais si je comprend bien tu l'avais compris et on est pas plus avancés ^^

Hors ligne

#5 29-12-2006 02:03:09

vin100
Membre

Re : Eviter duplication de contenu - Récupérer ID des sujets dans index.php

en fait faudrait faire une autre requête pour récupérer l'id du topic en fonction de celui du post

un truc du genre :

    $result = $db->query('SELECT topic_id FROM '.$db->prefix.'posts WHERE id='.$pid) or error('Impossible de retrouver les informations du message', __FILE__, __LINE__, $db->error());
    if (!$db->num_rows($result))
        message($lang_common['Bad request']);

    $tid = $db->result($result);

mais ça veut dire que tu va lancer une requête supplémentaire pour chaque forum sur ton index, si t'as 15 forums, 15 requête en sus

après y'a p'tete moyen de modifier la requête tout en haut mais ça dépasse mes compétence

Hors ligne

#6 29-12-2006 03:14:50

bertimus
Membre

Re : Eviter duplication de contenu - Récupérer ID des sujets dans index.php

Ok c'est déjà très gentil de t'être penché sur mon cas... A 2 on progresse toujours mieux que tout seul tongue

Allez, quelqu'un de super calé aurait-il la gentillesse de me/nous donner le coup de pouce final afin de modifier la requête suivante et ainsi faire apparaître le N° de sujet ?

$result = $db->query('SELECT c.id AS cid, c.cat_name, f.id AS fid, f.forum_name, f.forum_desc, f.redirect_url, f.moderators, f.num_topics, f.num_posts, f.last_post, f.last_post_id, f.last_poster FROM '.$db->prefix.'categories AS c INNER JOIN '.$db->prefix.'forums AS f ON c.id=f.cat_id LEFT JOIN '.$db->prefix.'forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id='.$pun_user['g_id'].') WHERE fp.read_forum IS NULL OR fp.read_forum=1 ORDER BY c.disp_position, c.id, f.disp_position', true) or error('Impossible de retrouver la liste des catégories et des forums', __FILE__, __LINE__, $db->error());

[C'est pour la bonne cause car ça fera du bien à tous les forums punbb de ne plus avoir de duplication de contenu wink]

D'avance merci wink

Bertrand

Dernière modification par bertimus (29-12-2006 03:39:30)

Hors ligne

#7 29-12-2006 18:27:10

Pandark
Guide

Re : Eviter duplication de contenu - Récupérer ID des sujets dans index.php

En même temps, ça ne change pas grand chose... si tu vas par là,
http://www.punbb.fr/forums/viewtopic.php?pid=32182
http://www.punbb.fr/forums/viewtopic.php?pid=32190
http://www.punbb.fr/forums/viewtopic.php?pid=32192
http://www.punbb.fr/forums/viewtopic.php?pid=32194
etc. qui sont affiché comme dernier message de la discussion à chaque fois qu'un message est écrit vont vers la même page (avec un message de plus).


=>  Plugins | Modifications | Liens utiles   <=
                .._ -Pandark- _..
                Serial Dreamer

Hors ligne

#8 29-12-2006 18:36:48

mangafan
Membre

Re : Eviter duplication de contenu - Récupérer ID des sujets dans index.php

Je suis d'avis de dire que dans ce genre de cas c'est à google de s'adapter mais ne le fait-il pas déjà ?

Il doit bien savoir reconnaître des modèles de forums ? Et indexer au minimum une fois la page c'est tout ce qu'on lui demande ?


:canon: Mangafan : Mettez un chat dans votre processeur ! happy

Hors ligne

#9 29-12-2006 18:56:59

vin100
Membre

Re : Eviter duplication de contenu - Récupérer ID des sujets dans index.php

tu plaisante mangafan j'espère ?

Pandark, le but c'est justement de virer les adresses avec pid= pour n'avoir que des adresses avec tid= de façon à n'avoir qu'une seule adresse pour une même page et non pas autant d'adresses que de messages

Hors ligne

#10 29-12-2006 18:59:35

bertimus
Membre

Re : Eviter duplication de contenu - Récupérer ID des sujets dans index.php

Pandark a écrit :

En même temps, ça ne change pas grand chose... si tu vas par là,
http://www.punbb.fr/forums/viewtopic.php?pid=32182
http://www.punbb.fr/forums/viewtopic.php?pid=32190
http://www.punbb.fr/forums/viewtopic.php?pid=32192
http://www.punbb.fr/forums/viewtopic.php?pid=32194
etc. qui sont affiché comme dernier message de la discussion à chaque fois qu'un message est écrit vont vers la même page (avec un message de plus).

Ben oui on est d'accord et c'est bien ça le problème : multiples liens qui mènent exactement au même sujet.

Résultat : non google ne s'adapte pas (hum c'est lui qui est en position de force hein wink), il indexe toutes ces URL tout en les ignorant, c'est vraiment pas le pied puisqu'il considère ainsi que que nos forums ont beaucoup de pages mais que la majorité d'entre elles ne sont pas pertinentes donc sans intérêt...

Un modèle de "bonne méthode" c'est WebRankInfo, si on l'applique à punbb il faudrait que chaque dernier message posté mène non pas vers viewtopic.php?pid=32182#p32182 mais vers viewtopic.php?id=4046#p32182 et c'est bien ça que google nécessite pour que notre forum devienne son copain (seo friendly n'est-ce pas ? wink)

Edit : Oops, presqu'au même moment Vin100 - Bon ben je vois que nos messages se rejoignent ce qui me rassure, je ne suis pas fou tongue

Dernière modification par bertimus (29-12-2006 19:09:16)

Hors ligne

#11 29-12-2006 19:12:23

Pandark
Guide

Re : Eviter duplication de contenu - Récupérer ID des sujets dans index.php

vin100 a écrit :

tu plaisante mangafan j'espère ?

Pandark, le but c'est justement de virer les adresses avec pid= pour n'avoir que des adresses avec tid= de façon à n'avoir qu'une seule adresse pour une même page et non pas autant d'adresses que de messages

Dans ce cas là, il faudrait faire une division euclidienne et prendre ce nombre comme celui de la page (ce qui doit déjà être fait dans punBB pour les liens en haut et bas des discutions "pages: 1 2 ... 8 9")


=>  Plugins | Modifications | Liens utiles   <=
                .._ -Pandark- _..
                Serial Dreamer

Hors ligne

#12 29-12-2006 19:16:30

Pandark
Guide

Re : Eviter duplication de contenu - Récupérer ID des sujets dans index.php

bertimus a écrit :

Un modèle de "bonne méthode" c'est WebRankInfo, si on l'applique à punbb il faudrait que chaque dernier message posté mène non pas vers viewtopic.php?pid=32182#p32182 mais vers viewtopic.php?id=4046#p32182 et c'est bien ça que google nécessite pour que notre forum devienne son copain (seo friendly n'est-ce pas ? wink)

Ce n'est pas très logique de récupérer l'id d'un message dont on a rien à faire, autant récupérer celui de la discution + la partie entière de la division euclidienne du nombre de messages de la discussion par nombre de messages à afficher par page.


=>  Plugins | Modifications | Liens utiles   <=
                .._ -Pandark- _..
                Serial Dreamer

Hors ligne

#13 29-12-2006 19:36:02

bertimus
Membre

Re : Eviter duplication de contenu - Récupérer ID des sujets dans index.php

Youpi je n'ai absolument rien compris wink [Tu parles à un non programmeur]

Avec mes mots : ce qui n'est pas logique c'est d'avoir plusieurs adresses pour aller au même endroit... L'idée est d'avoir à chaque fois un seul chemin vers chacune des discussions, sujets et posts et je trouvais que l'ID du sujet était, à priori, l'élément le plus simple à mettre comme "clé" (vu qu'il y a bien le champ "topic_id" dans la table "posts")...

Mais bon, si tu as une autre solution je suis preneur... celle-ci est-elle simple à mettre en oeuvre ? Si oui, pourrais-tu nous communiquer les modifications à accomplir ?

Dernière modification par bertimus (29-12-2006 19:43:48)

Hors ligne

#14 29-12-2006 20:09:03

Pandark
Guide

Re : Eviter duplication de contenu - Récupérer ID des sujets dans index.php

J'ai dit qu'il fallait récupérer l'id de la discussion (qui est  dans la table post) et  le numéro de la page (après, on garde l'id du message pour l'ancre -#[idmessage])
Ca donne viewtopic.php?id=4046&p=1#p32250

(Je ne suis pas plus programmeur ^^)


=>  Plugins | Modifications | Liens utiles   <=
                .._ -Pandark- _..
                Serial Dreamer

Hors ligne

#15 29-12-2006 20:18:33

bertimus
Membre

Re : Eviter duplication de contenu - Récupérer ID des sujets dans index.php

Ben dans l'exemple que tu donnes, je ne vois pas l'intérêt : t'as déjà l'ID du sujet, je vois pas pourquoi s'embêter à lui ajouter l'id de la discussion... viewtopic.php?id=4046#p32250 me suffirait amplement wink

La question de départ reste donc posée : comment récupérer l'ID du topic sur index.php ?

Dernière modification par bertimus (29-12-2006 20:20:00)

Hors ligne

#16 29-12-2006 20:51:22

Pandark
Guide

Re : Eviter duplication de contenu - Récupérer ID des sujets dans index.php

Bah parce qu'on affiche jamais un message tout seul... l'id de la discussion est dans la table des messages dans la base de donnée... donc c'est plus simple.. en plus, on a besoin de l'id de la discution pour savoir quels messages afficher...


=>  Plugins | Modifications | Liens utiles   <=
                .._ -Pandark- _..
                Serial Dreamer

Hors ligne

#17 29-12-2006 20:53:44

bertimus
Membre

Re : Eviter duplication de contenu - Récupérer ID des sujets dans index.php

Décidémment on a du mal à se comprendre huh mais là ça vient de moi...
Bref, on est d'accord, je croyais que tu dissociais l'id de la discussion de ce que j'appelle l'id du sujet mais c'est exactement la même chose lol wink

On en est par contre toujours au même point et le schimil, schimili, schimilibili, ick n'a toujours pas avancé huh

Dernière modification par bertimus (29-12-2006 21:01:26)

Hors ligne

#18 29-12-2006 20:59:07

Pandark
Guide

Re : Eviter duplication de contenu - Récupérer ID des sujets dans index.php

Bah sujet désigne uniquement l'intitulé d'une discussion dans punbb-fr wink


=>  Plugins | Modifications | Liens utiles   <=
                .._ -Pandark- _..
                Serial Dreamer

Hors ligne

#19 29-12-2006 21:03:06

bertimus
Membre

Re : Eviter duplication de contenu - Récupérer ID des sujets dans index.php

Ah voui mais je ne faisais pas référence au terme propre à punbb mais plus au terme général... rolala, bon c'est bon je sors neutral

Y'a-t-il un sauveur dans l'assemblée ?

Dernière modification par bertimus (29-12-2006 21:12:45)

Hors ligne

#20 29-12-2006 21:37:01

vin100
Membre

Re : Eviter duplication de contenu - Récupérer ID des sujets dans index.php

Pandark a raison il faut aussi prendre en compte le numéro de la page si la discussion s'étend sur plusieurs pages ; mais pour moi le schmilblick est le même : comment récupérer en une seul requête sur la page d'accueil les tid des derniers messages

en fait il faudrait modifier PunBB pour qu'il enregistre non pas seulement l'identifiant du dernier post mais aussi de sa discussion dans la table forums, ça serait bcp plus simple mais cela remet en cause le schéma de la base de données et quelques fonctions

Hors ligne

#21 29-12-2006 21:46:53

bertimus
Membre

Re : Eviter duplication de contenu - Récupérer ID des sujets dans index.php

Ah voui, les choses se compliquent alors, hum d'accord, bien bien...

Hors ligne

#22 29-12-2006 22:26:07

Pandark
Guide

Re : Eviter duplication de contenu - Récupérer ID des sujets dans index.php

Comme je l'ai dit, on récupère déjà le numéro des pages pour l'afficher et les liens avec id & p existent aussi wink


=>  Plugins | Modifications | Liens utiles   <=
                .._ -Pandark- _..
                Serial Dreamer

Hors ligne

#23 29-12-2006 22:29:55

Pandark
Guide

Re : Eviter duplication de contenu - Récupérer ID des sujets dans index.php


=>  Plugins | Modifications | Liens utiles   <=
                .._ -Pandark- _..
                Serial Dreamer

Hors ligne

#24 29-12-2006 23:24:25

vin100
Membre

Re : Eviter duplication de contenu - Récupérer ID des sujets dans index.php

oui mais pas sur l'index

Hors ligne

#25 29-12-2006 23:33:50

Pandark
Guide

Re : Eviter duplication de contenu - Récupérer ID des sujets dans index.php

Bah oui, mais sur l'index, il utilise last_post_id du forum dans la BDD... (ce qui est un peu  du bricollage). Donc on peut très bien faire pareil avec l'id de la discussion et de la page...


=>  Plugins | Modifications | Liens utiles   <=
                .._ -Pandark- _..
                Serial Dreamer

Hors ligne

Pied de page des forums