Correction des liens internes

SPIP possède des raccourcis spécifiques pour faire des liens internes au site. Par exemple pour pointer vers l’article 25, on utilise le raccourci [texte->25].

Il peut arriver que les rédacteurs et rédactices du site utilisent directement l’URL de la page publique lorsqu’ils créent des liens dans leurs articles.

Le plugin « correction des liens internes » permet de corriger automatiquement ces liens au moment de la rédaction du contenu.

Pourquoi utiliser les raccourcis de SPIP pour formater les liens internes ?

L’usage des raccourcis SPIP pour formater les liens internes permet :
-  de styler différemment les liens internes des liens externes.
-  de ne pas dépendre de l’URL du site.
-  de ne pas dépendre de l’URL des objets.
-  de permettre d’exporter facilement vers d’autres support que du Web [1].

Comment fonctionne le plugin

Le plugin s’installe comme n’importe quel plugin.

Lors de la validation d’un formulaire de rédaction d’un objet (article, rubrique etc.), le plugin vérifie les liens internes. Tout lien commençant par l’URL du site (par exemple http://www.example.com) sera analysé pour vérifier qu’il ne s’agit pas d’un objet SPIP. L’analyse se base sur la configuration du type d’URL. Autrement dit si un rédacteur copie-colle l’URL de la page publique d’un article, le plugin va le repérer.

Il va alors transformer automatiquement le lien, en mettant le raccourci SPIP correspondant :
-  [texte->xxx] s’il s’agit de l’article xxx.
-  [texte->autxxx] s’il s’agit de l’auteur xxx.
-  [texte->rubxxx] s’il s’agit de la rubrique xxx.
-  [texte->objetxxx] s’il s’agit de l’objet xxx.

Le plugin a été testé avec tous les types d’URL de SPIP, y compris les URLS arborescentes. N’hésitez pas cependant à faire part de tous cas problématiques.

Prise en compte d’autres domaines

Par défaut, le plugin reconnait toutes les urls sur le domaine où est installé le site [2].

Si votre site est accessible avec et sans www, en http et en https, si vous avez des alias (noms de domaines équivalents) [3], ces variantes d’urls ne seront pas reconnues.

Dans ce cas, vous pouvez définir avec une constante une liste de domaines supplémentaires considérés comme locaux.
Par exemple, dans config/mes_options.php :

define('CORRECTION_LIENS_INTERNES_AUTRES_DOMAINES', 'http://domaine.tld, 
https://www.domaine.tld, http://www.domaine2.tld/'); 

Plugin Multi-domaines

Si le plugin multi-domaines est activé, le plugin le reconnait automatiquement et tous les domaines déclarés dans la configuration multi-domaines sont considérés comme des domaines locaux, les liens absolus comprenant ces domaines sont transformés en raccourcis SPIP.

Notes

[1Par exemple du LaTeX pour produire un livre.

[2détection basée sur la fonction url_de_base()

[3en général, ce n’est pas une bonne idée, les variantes devraient être redirigées sur le domaine principal

Le logo est de Dmitry Mirolyubov sous Licence Creative Commons, Paternité

Discussion

4 discussions

  • 6

    Ciao

    J’ai repris un site dont le contenu est rempli de copié/collé d’url internes.
    Du coup j’ai installé le plugin et tenté de sauvegarder une rubrique ayant des liens internes complets.
    Une fois enregistré la rubrique n’est pas corrigée.

    Le cas est une liste de la forme :
    URL_SITE étant bien l’url présente dans la configuration du site.

    <ul>
    <li><a href="URL_SITE/chat/diabete">Le diabète</a></li>
    [...]
    </ul>

    SPIP 4.2.4 et php 8.1.21

    Est ce que je suis dans un cas non pris en compte par le plugin ?

    • Oui, le plugin ne corrige que les liens marqués avec le code SPIP [->], pas le code HTML.

      Il faudrait que tu passe un coup de « sale » pour transformer le HTML en raccourcis SPIP.

    • Hello

      Merci pour le retour.
      Je vais voir si je peux faire un patch car c’est un cas de figure qui me semble licite.

      Si on copie/colle une url c’est qu’on n’est pas à l’aise avec la syntaxe de SPIP.
      J’ai pas de mal de cas où cela fini en html car si on passe au niveau de copier/coller un lien interne c’est qu’on ne sait pas écrire en SPIP du tout. :)

    • Je pense vraiment qu’il faudrait dans ce cas s’appuyer plutot sur sale, Peut être faudrait-il que ce sot le plugin sale qui fasse, sur demande, la correction en base.

    • Si on copie/colle une url c’est qu’on n’est pas à l’aise avec la syntaxe de SPIP.

      Certes, mais si on copie colle une url en la mettant explicitement dans le href d’une balise <a> dans le texte d’un article, c’est qu’on sait un peu ce qu’on fait en écrivant du html brut, qui débraye donc les mécanismes natifs.

      Pour moi ça sort du cadre de ce plugin.

    • Hello

      Pas de problème.
      Pour ma part je ne vois pas trop de différence entre une personne qui fait un copié/collé/ d’une url et qui l’intègre via porte plume qu’une personne qui copie/colle en connsaisant vaguement html. Dans les 2 cas l’url interne ne respecte pas le formalisme rédactionnel.

      La majorité l’emporte, je me code ça dans mon coin :)

    • Moi surtout ce qui me fait tiquer, c’est pourquoi corriger les <a> et pas le reste du balisage HTML ?

      C’est pour ca que pour moi ca releverait plutot du plugin sale, quitte à ce que correction_liens_interne passe après.

    Répondre à ce message

  • Je n’utilise pas le plugin mais je vois que le code de correction_liens_internes_correction utilise la fonction create_function qui est obsolète dans ph 7.2 et a disparu de php 8.0 cf https://www.php.net/manual/fr/function.create-function.php

    Répondre à ce message

  • 9
    Christophe

    Bonjour,

    En passant de la version 1.5.1 à la version 1.6.0, je constate des dysfonctionnements dans les newsletters.

    En effet, les urls sont modifiées.
    Au lieu d’avoir :
    https://www.mondomaine.ext/url-propre-de-mon-article
    j’obtiens :
    https://www.mondomaine.ext/[->45]
    où 45 est l’identifiant de l’article.

    Idem pour le lien de consultation de l’infolettre qui devient
    https://www.mondomaine.ext/[->newsletter10]

    Une idée de correctif svp ?

    • Heu, je ne reproduis pas.

      CHez moi c’est transformé en [->45], sans aucun element parasite devant, si bien qu’après j’ai bel et bien l’url correcte.

      Donc deja 2 questions

      1. Est-ce que cela arrive aussi lorsque tu rédige des articles
      2. Est-tu en multidomaine, ou autre joyeuseté

    • Christophe

      Pour la rédaction d’article, aucun souci.
      Pas de multidomaines.

      L’url donnée, c’est celle lors de la réception du mail, car il y a un filtre |parametre_url{utm_source,newsletter} qui est appliqué à #URL_ARTICLE et #URL_NEWSLETTER
      Cela est induit par le filtre final #FILTRE{newsletters_liens_absolus}

      Et tout fonctionnait correctement avant l’update du plugin.
      D’ailleurs, en le désactivant, les urls sont correctes de nouveau.

      Mais je ne saisi pas les raisons :(

    • Ah. C’est donc pas dans ce que tu rédige, mais dans le gabarit de l’infolettre, c’est ca ?

    • Christophe

      Oui.

      En fait, que ce soit dans le gabarit ou dans la rédaction rien n’a changé.

    • J’ai exactement le même problème avec ce plugin et les newsletters. Si, dans un texte destiné à la newsletter, j’écris :

      Un essai de [lien->1024?test=toto&debug=dodo] blabla.

      J’obtiens l’HTML

      <p>Un essai de <a href='[->1024#38;debug=dodo' class='spip_in'>lien</a> blabla.</p>]

      Pareil à partir du squelette de la newsletter, avec un code comme :

      <a href="[(#URL_ARTICLE|parametre_url{test,toto}|parametre_url{debug,dodo})]">lien</a>

      Mais ça fonctionne correctement si je ne mets pas de paramètres URL.

    • Testé et approuvé. 👍

    • Testé et approuvé aussi, merci.

    • La v1.6.1 applique le correctif.

    Répondre à ce message

  • Christophe

    Bonjour,

    En passant d’une version 1.5.1 à la version 1.6.0, le plugin modifie les liens dans les newsletters.
    De fait, il ne sont plus fonctionnels.
    Au lieu d’avoir :
    https://www.mondomaine.ext/url-propre-de-mon article
    j’obtiens ;
    https://www.mondomaine.ext/article 45
    où « 45 » est l’identifiant de l’article.

    Mais cela se pose aussi sur le lien pour consulter la newsletter en ligne :
    https://www.mondomaine.ext/newsletter10

    Une idée de résolution svp ?

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom