Génération automatique de liens internes

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par rangdalf, 5 Décembre 2007.

  1. rangdalf
    rangdalf Nouveau WRInaute
    Inscrit:
    20 Avril 2005
    Messages:
    28
    J'aime reçus:
    0
    Bonjour,

    Je souhaite développer mes liens internes, pour cela je pensais à une sorte de glossaire qui renverrai des mots clés vers certaines de mes pages. 1 mot clé = 1 page.
    Je souhaiterai remplacer ces mots à la volée, d'où mes questions!

    Avec des fonctions style str_replace ou strtr ca ne devrait pas poser trop de probleme pour mes pages.
    Par contre comment le faire sur n'importe quel page (ex celle de mon forum) sans tout modifier.
    Je pensais à du javascript mais je n'ai aucune idée sur comment le faire.

    Existe t il des scripts tout prêt qui le font?
    Avez vous des bouts de code pour le faire?
    Est ce réalisable sans trop surcharger le serveur?

    C'est tout :)

    Ludo
     
  2. pcamliti
    pcamliti WRInaute impliqué
    Inscrit:
    9 Mars 2007
    Messages:
    697
    J'aime reçus:
    1
    L'idée me séduit aussi, et suis dans la même optique. J'ai tenté de développer un petit script mais en vain.
    Si d'autres personnes ont une piste, je suis preneur aussi.

    Merci par avance
     
  3. Elvis
    Elvis WRInaute discret
    Inscrit:
    20 Mai 2005
    Messages:
    109
    J'aime reçus:
    0
    Cette idée me séduit aussi, et si je devais mettre en place, je commencerais par créer une table de correspondance avec les champs mot-clé, url, correspondance active (j'aime bien pouvoir tout activer / désactiver quand ça me chante :D ).
    Une table ou un simple fichier texte...

    Ensuite je rajouterais une fonction dans la class template que j'utilise ( une antiquité, style celle utilisée par phpBB ) qui remplacerait les mots-clés par le lien correspondant avec un simple str_replace et deux tableaux.
     
  4. Suede
    Suede WRInaute passionné
    Inscrit:
    4 Octobre 2002
    Messages:
    2 441
    J'aime reçus:
    0
    Si tes textes sont dans une base de donnée, tu as un appel à la base pour afficher les textes. J'ai par exemple une fonction "affiche_message($id,$langue)"
    Dans cette fonction, tu rajoutes un traitement de ta chaine.
    Je ne sais pas ce qui est le mieux : stockage en base ou non. Ca risque de faire un appel à mysql pour quelque chose qui est plus ou moins statique.

    Attention, si tu as beaucoup de mots clefs, tu auras pas mal de remplacement.
    Attention aussi si tu as des mots clefs composés.
    Avec des expression régulière, tu devrais aussi pouvoir limiter le nombre d'affichage.

    François
     
  5. ckarone
    ckarone WRInaute occasionnel
    Inscrit:
    29 Juin 2004
    Messages:
    451
    J'aime reçus:
    0
    Salut,
    je travail sur le même projet avec des textes dans ma DB.
    Le script fonctionne bien pour les mots simple mais pour les mots composés je bloque un peu.

    Si vous avez une solution, je prend volontiers!

    voilà un post qui peux vous aider : http://www.developpez.net/forums/archiv ... 46084.html
     
  6. rangdalf
    rangdalf Nouveau WRInaute
    Inscrit:
    20 Avril 2005
    Messages:
    28
    J'aime reçus:
    0
    Salut Ckarone,

    Est il possible de profiter de ton travail?
    Autant ne pas réinventer la roue. De plus de cette manière tu pourras avoir des critiques/remarques/avis sur ton code :)

    Et pour la 2ème partie de ma question: Comment le faire de manière transparente sur n'importe quelle page. D'ou ma réflexion de le faire en Javascript.

    Ludo
     
  7. Elvis
    Elvis WRInaute discret
    Inscrit:
    20 Mai 2005
    Messages:
    109
    J'aime reçus:
    0
    Je déconseille de le faire en javascript, d'une part ça fait faire du traitement au client qui devrait être fait côté serveur...
    D'autre part si c'est en javascript, google captera pas tes liens internes.
     
  8. rangdalf
    rangdalf Nouveau WRInaute
    Inscrit:
    20 Avril 2005
    Messages:
    28
    J'aime reçus:
    0
    tout à fait exact :(
     
  9. pcamliti
    pcamliti WRInaute impliqué
    Inscrit:
    9 Mars 2007
    Messages:
    697
    J'aime reçus:
    1
    Merci pour le lien et pour les conseils.
    Petite question de geek en php:

    Code:
    $texte = preg_replace('`\b((joueur)s?)\b`si','<strong><a href="../joueur/index.php">$1</a></strong>',$texte);
    Est-ce que cela dois être placé dans une class ? include ?
     
  10. ckarone
    ckarone WRInaute occasionnel
    Inscrit:
    29 Juin 2004
    Messages:
    451
    J'aime reçus:
    0
    Dans mon cas les liens automatiques ne seront affichés que sur un seul type de page dans un paragraphe.
    Code:
    $sql1=" SELECT texte,id,... FROM matable";
    $result1 = mysql_query($sql1) or die (mysql_error());
    $texte = utf8_decode(stripslashes(mysql_result($result1, 0, 'texte')));
    
    $sql2=" SELECT motcle,id,... FROM matablecle";
    $result2 = mysql_query($sql2) or die (mysql_error());
    
    while($row=mysql_fetch_assoc($result2)){
    
    $texte = preg_replace('`\b(('.$row['motcle'].')s?)\b`si','
    <a href="ma-page-'.$row['id'].'.html">'.$row['motcle'].'</a>',$texte);
    }
    echo $textet ; 
    
    Voilà ce que cela peut donner en s'inpirant du post donné en lien plus haut.
     
  11. Suede
    Suede WRInaute passionné
    Inscrit:
    4 Octobre 2002
    Messages:
    2 441
    J'aime reçus:
    0
    Si tu as ton script php

    Code:
    <?php
    
    print $texte ;
    
    ; ?>
    tu le remplaces par
    Code:
    <?php
    $texte = preg_replace('`\b((joueur)s?)\b`si','<strong><a href="../joueur/index.php">$1</a></strong>',$texte);
    
    print $texte ;
    
    ; ?>
    
    C'est le plus simple. Après, tu peux avoir classe, fonction etc comme tu veux
     
  12. pcamliti
    pcamliti WRInaute impliqué
    Inscrit:
    9 Mars 2007
    Messages:
    697
    J'aime reçus:
    1
    En clair pour un débutant je recopie

    Code:
    <?php
    $texte = preg_replace('`\b((joueur)s?)\b`si','<strong><a href="../joueur/index.php">$1</a></strong>',$texte);
    
    print $texte ;
    
    ; ?>  
    Dans mon fichier php et tout les textes ici "joueur" deviendront des liens ...
     
  13. dop20vt
    dop20vt WRInaute occasionnel
    Inscrit:
    23 Juin 2007
    Messages:
    455
    J'aime reçus:
    0
    Je dois être un peu lent mais j'ai pas bien compris le but de la manoeuvre :oops: et j'aime pas quand je comprends pas :p

    EDIT : c'est pour faire une sorte de clickintext ?
     
  14. pcamliti
    pcamliti WRInaute impliqué
    Inscrit:
    9 Mars 2007
    Messages:
    697
    J'aime reçus:
    1
    Oui mais avec liens internes.... si tu as des mots clés importants dans texte style actualités... les liens apparaissent directes sans devoir <a href...></a> etc sur tous les mots

    voilà encore des fainéants
     
  15. Elvis
    Elvis WRInaute discret
    Inscrit:
    20 Mai 2005
    Messages:
    109
    J'aime reçus:
    0
    Ouais enfin, fainéants... Ca dépend de la substance à traiter. Si ça concerne quelques pages OK, mais il arrive bien un stade où cette automatisation prend son sens ;)
     
  16. Suede
    Suede WRInaute passionné
    Inscrit:
    4 Octobre 2002
    Messages:
    2 441
    J'aime reçus:
    0
    De plus, cela permet de varier les mots-clefs suivant la saison.
     
  17. zeb
    zeb WRInaute accro
    Inscrit:
    5 Décembre 2004
    Messages:
    12 021
    J'aime reçus:
    1
    ou un programme d'échange de lien partenaire vraiment ciblé.
     
  18. cedric_g
    cedric_g WRInaute accro
    Inscrit:
    18 Janvier 2006
    Messages:
    2 930
    J'aime reçus:
    2
    Arrgg pourquoi n'y ai-je pas pensé avant ?... :twisted:


    Sur mon blog (Dotclear) ça pourrait le faire, en link avec les images de mon site photo ! Je le fais quand j'y pense à la main lors de la rédaction des articles, mais c'est longuet !
     
  19. Suede
    Suede WRInaute passionné
    Inscrit:
    4 Octobre 2002
    Messages:
    2 441
    J'aime reçus:
    0
    Normalement preg_replace supporte l'entrée de tableau en argument. Mais dans mon cas, cela ne marche.

    Code:
    function InsererLien ($texte,$pattern,$url_replacement)
    {
    $texteremplace="$1";
    $TexteLien = preg_replace('`\b(('.$pattern.')s?)\b`si','<a href="'.$url_replacement.'">'.$texteremplace.'</a>',$texte);
    return $TexteLien;
    }
    $texte="le petit chat mange.";
    $pattern="petit";
    
    $url_replacement='http://www.photos-suede.com/';
    
    
    $text= InsererLien ($texte,$pattern,$url_replacement);
    print $text;
    

    marche.

    Mais pas :

    Code:
    function InsererLien ($texte,$pattern,$url_replacement)
    {
    $texteremplace="$1";
    $TexteLien = preg_replace('`\b(('.$pattern.')s?)\b`si','<a href="'.$url_replacement.'">'.$texteremplace.'</a>',$texte);
    return $TexteLien;
    }
    $texte[]="le petit chat mange.";
    $pattern[]="petit";
    
    $url_replacement='http://www.photos-suede.com/';
    
    
    $text= InsererLien ($texte,$pattern,$url_replacement);
    print $text;
     
  20. Suede
    Suede WRInaute passionné
    Inscrit:
    4 Octobre 2002
    Messages:
    2 441
    J'aime reçus:
    0
    Autre probleme, la présence d'accent : noël par exemple
     
  21. nickargall
    nickargall WRInaute accro
    Inscrit:
    13 Juin 2005
    Messages:
    6 601
    J'aime reçus:
    4
    Ou autre problème possible la présence des mots en question dans les URL des éventuels liens insérés dans le texte.

    <a href="cadeau-de-noel.php">Cadeau de noel</a>

    Sauf bien sur si c'est uniquement un "plain text" qui est traité par la fonction.. si c'est un texte qui contient des caractères HTML, ça va devenir déjà beaucoup plus compliqué
     
  22. Leonick
    Leonick WRInaute accro
    Inscrit:
    8 Août 2004
    Messages:
    19 274
    J'aime reçus:
    0
    et puis, pensez un peu à l'internaute : avoir 10 liens dans 3 lignes, on finit par s'y perdre.
    Ca me rappelle le début de l'hypertexte, il y a une vingtaine d'années : on était tellement content de cette possibilité que toutes les pages en étaient truffées, rendant la lecture assez indigeste. Au bout de 3 clicks, on ne savais même plus de quoi causait l'article initial
     
  23. Suede
    Suede WRInaute passionné
    Inscrit:
    4 Octobre 2002
    Messages:
    2 441
    J'aime reçus:
    0
    preg_replace à un parametre "limit"
     
  24. zeb
    zeb WRInaute accro
    Inscrit:
    5 Décembre 2004
    Messages:
    12 021
    J'aime reçus:
    1
    Je pensais aussi a ce problème et je me disais que si la liaison entre les pages était essentiellement une question de référencement, on peut toujours se débrouiller pour confondre les liens ainsi généré avec le texte via le CSS.
    La lecture n'est donc pas brouillée et le côté technique est mis en place.
     
  25. Leonick
    Leonick WRInaute accro
    Inscrit:
    8 Août 2004
    Messages:
    19 274
    J'aime reçus:
    0
    là, on arrive du côté obscur de la chose. Google pas aimer ça :lol:
     
  26. zeb
    zeb WRInaute accro
    Inscrit:
    5 Décembre 2004
    Messages:
    12 021
    J'aime reçus:
    1
    [​IMG]

    Hummm ! en effet
     
  27. Leonick
    Leonick WRInaute accro
    Inscrit:
    8 Août 2004
    Messages:
    19 274
    J'aime reçus:
    0
    sympathique.
    Il faudrait leur proposer pour la saint lucifer :lol:
     
  28. snooper
    snooper WRInaute passionné
    Inscrit:
    24 Août 2006
    Messages:
    1 297
    J'aime reçus:
    0
    Suede

    preg_replace à un parametre "limit"


    Je lis sur http://fr3.php.net/preg_replace que la fonction est de la forme

    mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit [, int &$count ]] )

    Que signifie le mixes, et le subject (je sais que ca veut dire sujet en anglais lol)



    Sinon pour un remplacement, puis-je lui dire de chercher dans la page le mot à chercher ou dois-je créér l'article dans une bdd, ou dois-je mettre

    $texte = "Lorem Ipsum..."
    str_replace=...

    ???


    Cordialement
     
  29. zeb
    zeb WRInaute accro
    Inscrit:
    5 Décembre 2004
    Messages:
    12 021
    J'aime reçus:
    1
    c'est faisable dans les deux cas (page et contenu en base) Le truc c'est que générer du code a la volée c'est plus simple a partir d'un contenu lui même simple. Donc avoir ton contenu de page en base (sans tous le charabia HTML autour) c'est ce qui peut se présenter de plus simple a priori.

    Encore faux t il que le site soit pensé dans cet esprit au démarrage sinon si tes pages sont en dure, cela veux dire que pour ajouter tes liens, il va falloir que le script frontal sur les url soit capable de trouver la page, la charger dans une variable et ensuite de cibler les mots dans le mélange joyeux et éclectique de code et de contenu. (bonjour la galère)

    Perso mes site sont maintenant en base et le 'contenu' lui est stocké sous forme de texte avec une mise en forme BBCode. c'est plus light a gérer ...
     
  30. snooper
    snooper WRInaute passionné
    Inscrit:
    24 Août 2006
    Messages:
    1 297
    J'aime reçus:
    0
    Ok zeb donc tu me conseillerai de mettre tout mon contenu en BDD et de me concentrer sur le graphisme et la mise en forme dans mes pages traditionnelles?
     
  31. zeb
    zeb WRInaute accro
    Inscrit:
    5 Décembre 2004
    Messages:
    12 021
    J'aime reçus:
    1
    je conseil rien de particulier, j'explique seulement mon axe de dev. En fait si tes pages traditionnelles sont en dur (code php inclus dans du pur html) tu va avoir beaucoup de mal a traiter le contenu pour générer des liens dedans donc vaut mieux oublier.

    si en revanche tu as un CMS (perso ou autre) qui gère le contenu réel de la page en base cela deviens un jeux d'enfant de rajouter des liens au passage quand tu formate le texte en HTML avant de l'inclure dans une template. De même pour ce type de site la mise en cache deviens intéressante car tu évite les requêtes répétées a la base pour composer ta page. (les liens dynamiques étant générés avant la mise en cache bien sur ...

    pour le design du site c'est a mon sens juste une histoire de CSS donc sans rapport réel avec les liens.
     
Chargement...
Similar Threads - Génération automatique liens Forum Date
Generation automatique de liens internes Netlinking, backlinks, liens et redirections 10 Mars 2009
Génération d'url automatique - duplicate content Référencement Google 3 Avril 2018
Génération automatique du titre wordpress ! Développement d'un site Web ou d'une appli mobile 14 Janvier 2014
Technique référencement - Génération contenu automatique + réseau blog Référencement Google 1 Décembre 2010
Script generation automatique index sitemap Crawl et indexation Google, sitemaps 15 Avril 2009
Génération automatique d'image et risque de blacklistage Référencement Google 20 Février 2006
Rapport de positionnement, date de génération et consultation Demandes d'avis et de conseils sur vos sites 21 Juin 2022
Google Sheets et caractère "+" dans génération de QR Code YouTube, Google Images et Google Maps 15 Septembre 2020
Génération d'id unique - Plantage serveur Développement d'un site Web ou d'une appli mobile 6 Décembre 2019
Génération Pages Bidons (Erreur 404) sur Google Netlinking, backlinks, liens et redirections 8 Mars 2019
Service worker bloque génération PDF Développement d'un site Web ou d'une appli mobile 25 Janvier 2019
Solution de génération adresse ip dynamique Netlinking, backlinks, liens et redirections 7 Juin 2016
Certificat SSL: generation CSR Administration d'un site Web 25 Mai 2016
A propos de la génération de thumbs Administration d'un site Web 12 Janvier 2015
Un crawler Orange : vers un Minitel nouvelle génération ? Autres moteurs de recherche connus 21 Novembre 2014
Génération URLs pour un classement Débuter en référencement 16 Décembre 2013
Avis sur Evolution Generation Demandes d'avis et de conseils sur vos sites 4 Mai 2013
Script php génération de badge au look iPhone ? Développement d'un site Web ou d'une appli mobile 3 Janvier 2013
Seetemap, le nouveau service de génération de sitemap passe en beta ouverte Débuter en référencement 14 Novembre 2012
Génération PDF multipage Google Analytics 27 Mars 2012