Liens entre contenus

Les raccourcis typographiques de SPIP permettent de gérer très proprement les liens internes entre contenus, évitant notamment de tout casser quand la méthode de construction des URL change, ou que l’on déplace certains contenus.

Le plugin Médiathèque permet en outre d’éviter que soient supprimés des documents qui sont rattachés à des articles, soit explicitement, soit simplement par appel d’un des modèles <doc>, <img> ou <emb>.

Ce plugin « Liens entre contenus » propose d’assurer la même protection à l’ensemble des types de contenus de SPIP, pour empêcher que l’un d’eux soit supprimé si d’autres pointent vers lui.

Prenons par exemple ce vieil article [1] sur mon blog.

Le lien intitulé « Tiscali » pointe vers cet autre article encore plus ancien, y faisant référence.

De l’information en plus

Côté espace privé, le plugin « Liens entre contenus » ajoute une boîte d’information sur chacun de ces deux articles, pour montrer l’existence du lien :

Une boîte en plus dans l’interface

Zoomons sur cette boîte, d’abord dans le cas du premier article :

On peut voir les informations suivantes :

  • l’article que l’on est en train de visualiser contient un lien vers un autre contenu, sur lequel nous savons ceci :
    • c’est un article, comme l’indique l’icône
    • cet article est publié, comme l’indique le carré vert [2]
    • le titre de l’article lié est indiqué, ainsi que son identifiant
    • je peux cliquer pour aller consulter directement cet autre article
  • aucun autre contenu ne contient de lien vers l’article que l’on est en train de visualiser

Si l’on regarde la boîte ajoutée au second article, l’information est logiquement complémentaire :

Si, de plus, j’écris un lien qui pointe vers un contenu qui n’existe pas, cela est mis en évidence :

Mais surtout une protection contre les fausses manipulations !

Là où ce plugin devient vraiment intéressant, c’est qu’il permet d’éviter des manipulations hasardeuses qui pourraient mettre en péril l’intégrité du site [3].

En effet, si je veux mettre changer le statut du second article, le remettre en évaluation par exemple...

... le plugin va me prévenir qu’un autre contenu pointe vers celui-ci, qu’il serait impacté par une telle action [4], et me propose donc de l’annuler !

Si j’effectue tout de même cette action, malgré l’alerte, la boîte du premier article se présentera différemment, on verra bien que ce contenu pointe vers un autre dont le statut n’est malheureusement pas « publié » :

Mieux, l’information est importante, donc elle est mise en évidence dès le début de la page :

Installation

Télécharger le paquet ZIP du plugin et placer son contenu dans votre répertoire « plugins/ ». Activez-le ensuite dans la page de gestion des plugins.

Évolutions...

Toutes les actions de changement de statut ne sont pas protégées, notamment dans les listes.

Notes

[1L’idée est d’illustrer mon propos, pas de me faire de la pub, l’obsolescence de ces contenus devrait suffire...

[2OK, pas terrible pour l’accessibilité, mais j’ai repris le standard SPIP pour être cohérent.

[3OK, j’y vais un peu fort...

[4Puisqu’il contiendrait alors un lien vers un contenu non publié.

Discussion

20 discussions

  • suggestion d’amélioration : les formulaires sont hélas vus comme un modèle formulaire... :-$

    Répondre à ce message

  • Bonjour, exactement ce que je cherchais ce plugin... Un grand merci !
    Toutefois, serait-il possible d’activer la vérification sur des articles existants - hors genie - c-a-d lancer une vérification « préalable » quitte à ce qu’elle soit lourde ?
    venant de récupérer une base de données d’une vingtaine de Mo et environ 4000 articles (suite à une opération sur un ancien site), mon besoin est ici de tester la cohérence initiale des données... donc avant d’entrer en phase de prod (où le genie sera là plus qu’utile).

    Merci de m’indiquer si une telle opération est déjà prévue.

    Répondre à ce message

  • 16

    Ce plugin (excuser le terme anglophone) est très intéressant. Mais j’ai dû le désinstaller. En effet, j’utilise dans mes squelettes un modèle qui insère un script pour afficher un album picasa dans ma page article. Le plugin semble chercher une table picasa dans la base de donnée spip... et affiche donc des erreurs SQL. Dommage.

    • C’est étrange, tu peux me donner la syntaxe d’appel de ton modèle, et éventuellement son code ?

    • Ok, Je t’envoie le tout sur ton adresse mail.

    • Merci, j’essaierai de voir ce qui ne marche pas bien...

    • Salut, j’ai le même souci : avec un modèle très simple nommé encadre.html :

      [<div [id="(#ENV**{ancre})" ]class="encadre"[ style='float:(#ENV{align}|match{left|right});']>[
      	<h3 class="titre-encadre">(#ENV**{titre}|propre|PtoBR)</h3>]
      	(#ENV**{texte}|propre)
      </div>]

      Dès que le modèle est présent dans un article le plugin s’emmêle les pinceaux en cherchant une table « spip_encadre »...

      ex. de Warning affiché :

      Erreur SQL 1146
      Table ’mabase.spip_encadres’ doesn’t exist
      SELECT statut FROM spip_encadres WHERE id_encadre=’’

      évidement, il n’y a pas de table spip_encadre, ni de colonne id_encadre...

    • Quel est le code d’appel du modèle ?

      Si j’en crois le contenu du modèle, ce doit être à peu près ça :

      <encadre|titre=toto|texte=tutu>

      As-tu bien ton modèle dans modeles/encadre.html ?

    • Exactement (en réponse à tes deux questions).

    • Voilà qui commence à corriger le problème :
      http://zone.spip.org/trac/spip-zone/changeset/46919

      Il ne reste plus qu’à corriger l’affichage.

    • Heu ? C’est normal que le warning soit toujours là ?

    • J’ai bien dit qu’il reste à corriger l’affichage. Les données en base sont bonnes maintenant, c’était la première étape.

    • Oui, je t’avais lu, mais je n’étais pas sûr de t’avoir bien compris ! en tout cas merci de travailler là dessus !

    • Génial !

      Depuis ton dernier commit (46984), tout fonctionne comme sur des roulettes : les modèles sans id et sans objets en base ne déclenchent plus de warning.

      Merci !

    • Super, bonne nouvelle !

      J’essaie d’améliorer l’affichage encore, mais c’est déjà bien s’il n’y a plus de bug...

    • Hmm, en passant de nouveau sur ce plugin, j’ai essayé l’utilisation... J’ai pris un article qui contient des liens vers un autre article... Et ceci s’affiche : « Aucun autre contenu ne contient de lien vers celui-ci. »
      « Ce contenu ne contient aucun lien vers un autre contenu. »

      Je ne comprend pas... Bref, je modifie l’article et le sauve directement... et là, bravo, les liens s’affichent !...

      Comment faire pour que les articles déjà écrits prennent en considération les liens vers d’autres contenus... ?

      Merci

    • Oups, j’ai omis de remercier pour ce travail de Titan ! Merci aussi pour la correction des modèles inclus.

    • Comment faire pour que les articles déjà écrits prennent en considération les liens vers d’autres contenus... ?

      Il faut que tu attendes un peu le temps que le plugin scanne toute ta base de données à la recherche des liens entre contenus. selon la taille de la base, cela peut prendre plusieurs jours.

    • Ok, c’est super et fonctionne nickel !

    Répondre à ce message

  • 4

    Ah génial ! Merci de l’avoir remis au goût du jour celui-ci. J’avais testé la version précédente et « Samavétoukassé » (tm) :-)

    • Comment ça, tout cassé ???

    • Ben genre tout cassé quoi : grosse pages blanches avec du warning peucheupeu dans tous les sens. C’est là que j’ai compris qu’il ne devait pas être trop « 2.1 complient ». Du coup j’avais rangé ça dans un coin « ToInspectFurther » de ma mémoire mais une fois de plus je me suis fait coiffé au poteau ;)

    • Bizarre, moi ça tournait à peu près bien sur un SPIP 2.1.9...

      Tu es sûr que tu n’avais pas récupéré le zip pour SPIP 1.9.2 plutôt que la version Subversion compatible SPIP 2.x ?

    • Une bourde dans le style me ressemble assez bien en effet ;)

    Répondre à ce message

  • 2

    Salut,

    Un petit bug : Sur un article possédant un seul lien vers l’auteur 1 [Contact->aut1] , j’obtiens : Attention, ce contenu est publié, mais contient des liens vers des contenus qui ne le sont pas ! Alors que l’auteur a un compte bien actif.

    Répondre à ce message

  • 6

    Bonjour

    J’ai installé le plugin sur mes deux sites qui sont tous deux sous spip 2.1.8, sur l’un des deux il fonctionne après avoir vidé le cache dans l’admin, mais dans l’autre rien à faire. La fenêtre est visible mais m’indique qu’il n’y a aucun lien interne dans des articles qui en contiennent pourtant.

    J’ai vidé le cache plusieurs fois, désinstallé et réinstallé le plugin, toujours rien. Y a-t-il des problèmes de compatibilité avec d’autres plugins ? Dans le site où ça ne marche pas, j’ai deux plugins supplémentaires, Menus et Zen-garden.

    • En fait je viens de voir que ça marche après que j’ai modifié le contenu de l’article et fait « enregistrer ». Dans ce cas, la boîte de dialogue m’indique bien les liens contenus dans l’article ou pointant vers lui. Problème : je ne vais pas faire ça pour les 550 articles de mon site...

      C’est étrange car sur mon autre site, après avoir vidé le cache de spip, les liens dans les articles ont été reconnus sans problème et sans que j’ai besoin d’intervenir...

    • La reconnaissance des liens dans les contenus qui existaient avant installation du plugin est faite via le génie, par lots, dans les heures/jours qui suivent l’installation, suivant le nombre de contenus.

    • Le génie ?

      Merci pour votre réponse, ce plugin est très utile : sur le peu d’articles que j’ai eu le temps de regarder, il y avait pas mal de liens cassés, et les alertes en rouge marchent bien.

      Bravo !

    • Le génie, c’est ce qui permet d’effectuer des tâches de fond dans SPIP, déclenchées de temps en temps lors de requêtes des visiteurs et rédacteurs.

      Traiter tous les contenus existant lors de l’installation, comme c’était le cas avant, pouvait planter en cours sur les gros sites.

      Heureux de savoir que ce plugin est utile !

    • Sinon, un petit bug que je viens de découvrir :
      si dans mon article, un lien pointe vers un auteur, comme ceci :

      Pour en savoir plus sur moi, ou pour me contacter, [c'est par ici->auteur1]

      j’ai un message d’erreur en rouge me disant qu’un lien n’est pas valide, et aussi un message d’erreur dans le squelette :

      Erreur SQL 1054
      Unknown column 'titre' in 'field list'
      SELECT titre FROM spip_auteurs WHERE id_auteur=1

      Si j’enlève le lien vers l’auteur, le message d’erreur disparaît. Comme si le plugin ne comprenait pas les liens vers les auteurs (ou que ce type de lien n’est pas prévu).

      Pas grave, mais ça peut poser question...

    • C’est déjà corrigé, comme l’indique cette discussion : http://www.spip-contrib.net/Liens-e...

    Répondre à ce message

  • 1

    C’est chouette. Mais tant qu’à calculer avec le génie les liens entre tous les anciens articles, n’y a t il pas une page de bilan, présentant tous les liens morts s’il y en a ?

    • C’est prévu, mais pas encore fait.

      Le problème est que la vérification du statut se fait pour l’instant lors de l’affichage, il faudrait le stocker en base plutôt, pour faire une page de synthèse.

    Répondre à ce message

  • 15

    Bonjour,
    Dans le message d’avertissement, il y a ce fameux verbe « impacter », ce nouveau barbarisme journalistique. En clair, impacter n’est dans aucun dictionnaire, c’est juste un anglicisme de publicité.

    Wiktionnary says : " Il est préférable d’éviter cet anglicisme pour décrire une influence générale, au profit de ses synonymes ou paraphrases plus précis, comme « avoir une incidence » et « avoir des répercussions ».

    cqfd !

    • Ah, merci, j’apprends !

    • enfin angliscime peut être, mais c’est surtout l’évolution d’une langue qui veut que des nouveaux mots apparaissent.

      En plus il y a bien en français un mot impact. Et on évite ici une périphrase.

    • OK, donc je laisse, c’est plus simple comme ça... ;-)

    • Bonjour,

      La langue française évolue. Sur Google, impacter : Environ 208’000 résultats (0,18 secondes)

      Impact : http://fr.wikipedia.org/wiki/Impact
      impacter : http://fr.wiktionary.org/wiki/impacter

      Donc, impacter n’est pas un anglicisme mais dérive du français « impact », comme une évolution normale de la langue, et pour ce verbe en avance sur son temps il me parait légitime d’anticiper l’Académie française.

      Donc, dans « Un certain temps », comme dirait Fernand Raynaud, le verbe impacter sera « homologué » par l’académie française et on le trouvera dans le Larousse.

      Bien cordialement

      FDG

    • Troll du lundi, c’est mimi.

      1. Ça n’empêche pas le mot d’être super moche.
      2. Ça n’empêche pas qu’on peut refuser qu’une langue évolue toujours dans le même sens avec toujours les mêmes influences venant de toujours la même culture technico-angliciste.
      3. Google ne détient pas la vérité, encore moins linguistiquement parlant.
    • 1. Question de goûts. Perso je trouve solutionner plus moche, et en plus qui ne sert à rien car on a déjà le verbe résoudre.
      2. En quoi y-a-il ici une influence technico-anglicistes. On prend un mot on en forme un autre. Qu’un phénomène // existe en anglais est-ce gênant ? Je suis plus gênait par les « workshop » qu’on nous sort à longueur de journée.
      3. Certes, mais il peut permettre d’évaluer l’usage statistiques d’un mot.

      ps : au fait Alex, tu te rend compte que tu a écrit « wikitionary says » en utilisant un mot anglais :p

    • Je ne trouve pas le mot « super moche », j’y suis largement habitué depuis toujours, donc il m’est venu naturellement. Je suis d’accord par contre qu’utiliser Google pour valider l’orthographe ou la pertinence d’un mot est une erreur...

      Que pourrait-on donc mettre à la place de

      Attention, un contenu publié pointe vers celui-ci, et sera impacté si vous le dépubliez !

      pour contenter tout le monde ?

      Attention, un contenu publié contient un lien vers celui-ci. Dépublier celui-ci aura une incidence sur l’autre !

      Bof bof...

    • Une phrase moins vague qui explicite mieux le problème que ça va engendrer.

      Attention, un contenu publié contient un lien vers celui-ci. Vous risquez de créer un lien mort par cette dépublication/par ce changement de statut/etc.

    • N’y a-t-il pas une limite de nombre de caractères pour les fenêtres ouvertes en JS avec alert() ?

      Si je dois commencer à utiliser une mediabox pour ça, la maintenance du plugin va devenir plus compliquée, elle l’est déjà pas mal...

    • Non, il n’y a pas de limite normalement, ou alors dans Netscape 0.4 et IE 2.

    • OK, alors c’est possible d’élaborer des messages bien plus explicites.

    • Alex says :

      « Des liens pointent vers cet article. Sa suppression (ou son changement de statut) aura des répercussions sur le fonctionnement du site. »

      Simple et Made in France.

      Mon juge de paix pour l’écrit demeure le dictionnaire. Selon internet, la première définition de impacter est : « Entrer en collision, heurter ». On peut être mieux inspirer, non ?

    • Je ne peux pas mettre « cet article », le message est générique pour tous les types de contenus. Il faudrait sinon un message particulier par type de contenu, à voir éventuellement en évolution.

      Je propose donc :

      Des liens internes pointent vers ce contenu. Son changement de statut aura des répercussions sur le fonctionnement du site.

    • Ca me semble simple, clair, limpide, précis !

    • Hop, messages modifiés commités.

    Répondre à ce message

  • 1

    Je viens d’essayer de l’installer sur un spip 2.1.10, et j’obtiens le message d’erreur suivant :
    Fatal error: Call to undefined function lienscontenus_initialiser() in /plugins/auto/liens_contenus/base/lienscontenus_upgrade.php on line 20

    Peut-être est-ce dû à un simple include_spip('inc/lienscontenus'); manquant dans la fonction d’installation.

    Répondre à ce message

  • 1

    Hello,

    Sur un plan plus spipien, je constate que le dézipe du plugin donne un répertoire « liens_contenus » contenant lui-même un répertoire « trunk » contenant lui même les fichiers et répertoires du plugins.

    Il faut donc tout ramener au premier niveau, soit le dossier « liens_contenus » et supprimer le répertoire vidé « trunk ».

    Bien cordialement

    FDG

    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