Aller au contenu

Sujets conseillés

Posté (modifié)

Bonjour,

A l'instar de ce qui se fait beaucoup sur les forums ou blogs. Comment à partir d'un texte qui est posté par un tiers dans un forum, puis je créer une fonction automatique afin que si les mots clés qui m'intéressent dans le texte soient transformés en ancre ?

Ex : une personne post dans mon forum : "j'aime bien cette guitare car elle à un bon son." Et que moi en tant qu'admin le mot 'guitare' m'intéresse pour ancrer un lien vers une page de mon site. L'ancre se fait de façon automatique

merci de vos réponses

Modifié par Trevis03
Posté

Salut Trevis,

A priori comme ça, je te dirai qu'il te faut premièrement un tableau de correspondances entre mot clé et article correspondant. Ce tableau peut-être une simple variable dans le php, ou carrément une table dans la base de données.

Ensuite, chaque fois qu'un commentaire est posté, il faut faire passer le commentaire dans une fonction qui va remplacer les mots clé par les liens correspondants, en utilisant la syntaxe de ton site (bbcode, html, etc)

Posté

Tu peux regarder du côté de ce qui est fait pour le plugin WordPress Keyword Autolink par exemple, c'est exactement le principe que tu décris.

Posté

ok merci.

C'est vrai c'est ce que je veux mais c'est adapté pour WordPress et je ne sais pas comment le rendre compatible avec mon site dans lequel je crée du contenu mais qui n'est pas un blog ni un forum

Posté

Voici un bout de code que j'utilise pour un de mes sites (definition est un objet...) :


function add_link_definition($html) {
global $count,$def;
// les éléments html à exclure
static $balises_exclues=array('h[1-6]','a');

// le traitement regex
if(!is_array($html)) {
if(!is_string($html)) return $html;
$balises=implode('|',$balises_exclues);
$mots=implode('|',array_map('preg_quote',$def->getKeywords()));
$regex='#<('.$balises.')[\s>].+?</\1>|<[^>]+>|(?<=\W)('.$mots.')(?=\W)#si';
return preg_replace_callback($regex,__FUNCTION__,$html);
}
if(isset($html[2])&& $count == 0){
$count++;
return '<a href="/definitions/'.clean_url($def->getWord()).'-'.$def->getId().'.html">'.$html[0].'</a>';
}
else{
return $html[0];
}
}

	
foreach($definitions as $definition){
$def=$definition;
$count = 0;
$string = add_link_definition($string);
}

Posté

Contrairement à ce qu'on trouve sur les sites qui utilisent cette bidouille, je mettrais une condition pour limiter le nombre de liens.

Au lieu de faire bêtement des liens sur tous les mots clés identiques sur la page, il suffit de lier les 2 ou 3 premières occurrences ou même seulement la première pour être plus naturel, donc plus efficace.

Posté

Contrairement à ce qu'on trouve sur les sites qui utilisent cette bidouille, je mettrais une condition pour limiter le nombre de liens.

Au lieu de faire bêtement des liens sur tous les mots clés identiques sur la page, il suffit de lier les 2 ou 3 premières occurrences ou même seulement la première pour être plus naturel, donc plus efficace.

Bonjour,

Si vous aviez lu le code, vous auriez vu qu'il ne créé un lien que pour la première occurrence.

Posté

Thick ne faisait pas particulièrement référence à ton site. ;)

Posté

En quoi est-il plus naturel de faire un lien uniquement sur la première occurrence ? Les gens ne lisent pas forcément un article à partir du début (surtout s'ils cliquent sur "Aller à" sur Google qui les amène dans un paragraphe de la page, ou même sur n'importe quel lien qui les amène sur une ancre précise à l'intérieur de la page), un lien est une invitation à prendre plus d'informations sur le mot linké, etc. Sur Wikipedia, ils font souvent un lien sur chaque occurrence d'un mot, même si le mot apparaît 20 fois dans l'article. Je ne prends pas Wikipédia comme modèle, loin de là, mais sur ce point précis, je ne pense pas qu'on puisse dire ni que ce n'est pas naturel, ni que ça pénalise leur référencement.

Ce qui n'est pas naturel, selon moi, c'est d'avoir différents libellés de liens pour des liens qui pointent vers une même page. Sauf si ces liens pointent vers des ancres précises dans cette page bien sûr, et dans ce cas ça prend tout son intérêt.

Posté

Personnellement, avoir trop de liens me fait fuir !

Il ne faut pas non plus en abuser, surtout pour un système non indispensable tel que celui-ci !

Je suis également partisan de ne faire qu'un seul lien par occurence.

Posté

Dans le cas particulier de Trevis03 (faire automatiquement des liens dans le contenu des messages de son forum), je pense que l'idéal serait de ne même pas faire de liens du tout. Qui écrit le message? Un visiteur du forum. Transformer un mot en lien, c'est transformer ce que la personne a écrit, ce n'est pas très respectueux. Qui nous dit qu'il va approuver les pages qui seront ainsi linkées ? Le visiteur sera-t-il content de constater que son propre message est rempli de liens vers des pages qu'il ne connaît pas, peut-être même avec des pages sur lesquelles il serait en désaccord complet ?

Posté

Si vous aviez lu le code, vous auriez vu qu'il ne créé un lien que pour la première occurrence.

Effectivement, je n'ai pas regardé le script.

Mon conseil était d'ordre général (merci _AT_Karnabal)

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...