Le plugin a2a pour lier des articles

Ce plugin permet de lier des articles de façon ponctuelle sans avoir à utiliser les mots-clés de SPIP. Il peut être utilisé pour mettre en place des liens de type « Lire aussi » comme dans le squelette Sarka-SPIP.

Installation

Installation et activation comme tous les plugins.

Utilisation dans l’espace privé

Le plugin ajoute un bloc d’informations sur les pages d’édition d’articles de l’espace privé.

Pour rechercher un article à lier, il faut entrer les termes à rechercher dans le champ prévu à cet effet. Ce champ vous permet d’effectuer une recherche libre dans le titre ou le contenu de l’article que vous désirez lier.

Remarque : une recherche sur artXX permet d’afficher directement l’article numéro XX.

Bloc du plugin a2a

Après avoir validé une recherche, les résultats de celle-ci s’affichent sous le champ de recherche. Il suffit de cliquer sur « Lier » pour attacher l’article correspondant à celui en cours d’édition.

Depuis la version 0.4 du plugin, il est possible de lier les articles de façon bidirectionnelle en cliquant sur « Lier des deux côtés ».

Depuis la version 2.0 du plugin, il est possible de typer les relations entres articles : ceci fait l’objet d’un article spécifique : Typage des relations entre articles avec A2A.

Champ de recherche de a2a

Il est aussi possible de gérer l’ordre ou le rang des articles liés en cliquant sur « Monter » et « Descendre ».

Trie des articles avec a2a

Utilisation dans vos squelettes

Pour récupérer la liste des articles liés à l’article de l’environnement :

<B_les_articles_lies>
<ul>
<BOUCLE_les_articles_lies(ARTICLES_LIES){id_article}{par rang}>
	<li>
	<BOUCLE_article_lie(ARTICLES){id_article = #ID_ARTICLE_LIE}>
	<a href="[(#URL_ARTICLE)]">#TITRE</a>
	</BOUCLE_article_lie>
	</li>
</BOUCLE_les_articles_lies>
</ul>
</B_les_articles_lies>

On peut raccourcir cette écriture à l’aide de la balise #ARTICLES_LIES qui renvoie un tableau contenant les #ID_ARTICLE des articles liés à l’article de l’environnement. Par défaut, le tableau renvoyé par la balise est classé par rang. Il est possible d’inverser le tri des articles du tableau avec l’écriture #ARTICLES_LIES{inverse}.

<B_articles_lies>
<ul>
<BOUCLE_articles_lies(ARTICLES){id_article IN #ARTICLES_LIES}>
<li><a href="[(#URL_ARTICLE)]">#TITRE</a></li>
</BOUCLE_articles_lies>
<ul>
</B_articles_lies>

Pour récupérer la liste des articles liant l’article de l’environnement :

<BOUCLE_liant(ARTICLES_LIES){id_article_lie=#ID_ARTICLE}{par rang}>
<BOUCLE_lesArticlesLiants(ARTICLES){id_article}>
<a href="[(#URL_ARTICLE)]">#TITRE</a>
</BOUCLE_lesArticlesLiants>
</BOUCLE_liant>

Depuis la version 2.1.0 du plugin, on peut simplifier à l’aider de la balise #ARTICLES_LIANT :

<BOUCLE_lesArticlesLiants(ARTICLES){id_article IN #ARTICLES_LIANT}>
<a href="[(#URL_ARTICLE)]">#TITRE</a>
</BOUCLE_lesArticlesLiants>

Par défaut, la balise retourne les articles liant dans l’ordre de rang. Elle peut prendre un argument optionnel {inverse}. Cependant, ce tri n’en général pas pertinent, on pourra préférer un tri à l’aide d’un critère de boucle « classique », par exemple par titre :

<BOUCLE_lesArticlesLiants(ARTICLES){id_article IN #ARTICLES_LIANT}{par titre}>
<a href="[(#URL_ARTICLE)]">#TITRE</a>
</BOUCLE_lesArticlesLiants>

Typage des relations entre articles

À partir de la version 2.x, le plugin permet de typer les relations entre articles. Voir l’article consacré à ce sujet.

Discussion

40 discussions

  • Répondre à ce message

  • 5

    Bonsoir
    Avec Spip 4.0.8 ; A2A 4.0.0 et PHP 7.4.30
    Je viens de remarquer que « Lier des deux côtés » ne fonctionne plus. Avant (mais avant quoi, je ne sais pas), cela fonctionnait :
    Depuis l’article1 : sélection de « art2 », puis « Lier des deux côtés » affichait bien dans chacun des articles le lien vers l’autre.
    Mais maintenant, depuis l’article1, j’ai bien le lien vers l’article2, mais depuis ce dernier, je n’ai pas le lien vers l’article1...
    Une idée ?

    Répondre à ce message

  • 2
    Christophe

    Bonjour,

    En spip 4, la balise #ARTICLES_LIES ne renvoie plus d’informations.
    Comment corriger cela svp ?

    • La balise retourne bien quelque chose (cf un var_dump) mais le critère IN est plus stricte sur ce qu’il attend à droite.

      Je regarde comment corriger.

    • Et donc la version 3,.0.0 est réellement compatible v4 (alors que la version 2.3.z n’avait pas été testée...)

    Répondre à ce message

  • 1

    Bonsoir,

    J’aimerais savoir si ce plugin pourrait intégrer une option de configuration qui proposerait automatiquement les liens A2A de tous les articles cités dans cet article, voire aussi de tous les articles (ou autres objets éditoriaux) pointant sur cet article....
    A moins qu’il n’existe déjà :sous quel nom ?
    Merci

    Répondre à ce message

  • Bonjour
    J’ai mis #FORMULAIRE_NAVIGATEUR_A2A#ID_ARTICLE pour pouvoir lier directement en ligne. Comment faire pour avoir aussi la possibilité de DÉLIER ?

    Répondre à ce message

  • 6

    Bonjour
    j’ai du redescendre de php 7.3 à 7.1
    sur php7.3 le plugin ne fonctionne plus mais donne cette alerte :

    Warning : count() : Parameter must be an array or an object that implements Countable in /home/clients/a3580510d3989b69fb26134d5ef34fc5/web/ficedl/cartoliste/ecrire/public/aiguiller.php on line 235

    Warning : count() : Parameter must be an array or an object that implements Countable in /home/clients/a3580510d3989b69fb26134d5ef34fc5/web/ficedl/cartoliste/ecrire/public/aiguiller.php on line 249

    bonne journée

    • Si c’est en PHP 7.3 je pense que tu es sous SPIP 3.3, car SPIP 3.2 n’est pas compatible avec cette version. De plus, il ne faut pas afficher les warning en production. Mais, j’ai tout de même noté ça dans un ticket afin de régler le problème dès que possible https://git.spip.net/spip-contrib-extensions/a2a/issues/1

    • PS : peux-tu me donner plus de détails stp, à quel moment le warning est affiché ?

    • Bonjour,
      spip 3.2.8 et 3.2.7 avant aussi
      ça arrive lorsque je saisie par exemple art4700 dans le formulaire « chercher un article » et que je clique sur rechercher

    • ah, je peux quand même lier, je n’avais pas vu que le résultat s’s’affichait quand même

    • Et oui, c’est pour ça que je disais « Si c’est en PHP 7.3 je pense que tu es sous SPIP 3.3, car SPIP 3.2 n’est pas compatible avec cette version. » :)

    • ok, j’ai fais du bruit pour rien :)

    Répondre à ce message

  • Excellent plugin et très développé dans l’ergonomie (le double moteur de recherche est vraiment un « plus » appréciable) sans parler de la documentation très fournie et y compris très spécialisée. Je regrette de ne pas en avoir eu connaissance avant, je pensais avoir fini tous mes ’squelettes’....! Mais on n’a jamais fini, n’est-ce pas. Merci !

    Répondre à ce message

  • 5

    Bonjour,
    Merci aux développeurs pour ce plugin bien utile !

    Il manque cependant la possibilité de récupérer le logo de l’article lié. Cela ne semble pas implanté dans le plugin (?). Ceci afin d’avoir la liste des articles liés avec leurs logos...

    Bien cordialement

    François

    • Que ce soit pour les articles liés ou liants, on a des boucles ARTICLES. Dans lesquelles toutes les balises classiques de la boucle article fonctionne dont #LOGO_ARTICLE.

    • Bonsoir et merci pour votre réponse !
      Je pense m’être mal exprimer dans mon post de départ. Dans la liste des articles liés, les logos sont de l’article en cours de lecture et non ceux des articles liés. Voici mon code :

      [(#REM) Articles liés :
      				avec le plugin a2a...
      				]				
      				
      				<BOUCLE_types_liaisons(DATA){source tableau, #TYPES_LIAISONS}>
      				<B_articles_lies2>
       				<div class="related-post margin-top-20 clearfix">
                     	<header class="widget-header">
                        <h4 class="title">
                          [(#CLE|a2a_traduire_type_liaisons)]
                        </h4>
                      </header>	
      				<ol>
      				<BOUCLE_articles_lies2(ARTICLES_LIES){id_article}{par rang}{type_liaison=#CLE}>
      				<div class="post col-md-3 col-sm-3 col-xs-12">
      						[(#LOGO_ARTICLE{#ID_ARTICLE_LIE}|image_reduire{90,*}|inserer_attribut{class, post-thumbnail})]
      				<div class="title">
      					<li><a href="#URL_ARTICLE{#ID_ARTICLE_LIE}">#INFO_TITRE{article,#ID_ARTICLE_LIE}</a></li>
      				</div>
      				</div><!--/post-->
      				</BOUCLE_articles_lies2>
      	 			</ol></div>
      				</B_articles_lies2>
      				</BOUCLE_types_liaisons>
      				

      Et en image afin de voir l’exemple...

      Merci pour vos aides !
      Bien cordialement
      François

    • #LOGO_ARTICLE ne prend visiblement pas d’argument. Du coup la solution est de passer par une boucle ARTICLES et pas par une boucle ARTICLES_LIES

      <BOUCLE_articles_lies(ARTICLES){id_article IN #ARTICLES_LIES}>
      #LOGO_ARTICLE
      </BOUCLE_articles_lies>

      j’imagine que {type_liaison=#CLE} doit fonctionner.

      Sinon il faut faire une sous boucle ARTICLES dans votre boucle articles_lie_2.

      Bref, il faut à un moment avoir une boucle ARTICLES qui engloble le #LOGO_ARTICLE.

    • Bonsoir et merci vivement !!!
      Eh non le critère type_liaison=#CLE ne fonctionne pas dans la boucle que vous proposez. Cependant, voici à nouveau mon code corriger en fonction de votre idée et cela fonctionne impeccablement bien !

      <BOUCLE_types_liaisons(DATA){source tableau, #TYPES_LIAISONS}>
      				<B_articles_lies2>
       				<div class="related-post margin-top-20 clearfix">
                     	<header class="widget-header">
                        <h4 class="title">
                          [(#CLE|a2a_traduire_type_liaisons)]
                        </h4>
                      </header>	
      				<ol>
      				
      				
      				<BOUCLE_articles_lies2(ARTICLES_LIES){id_article}{par rang}{type_liaison=#CLE}>
      				<div class="post col-md-3 col-sm-3 col-xs-12">	
      				<BOUCLE_articles_lies(ARTICLES){id_article IN #ARTICLES_LIES}{titre=#INFO_TITRE{article,#ID_ARTICLE_LIE}}>
      				[(#LOGO_ARTICLE|image_reduire{90,*}|inserer_attribut{class, post-thumbnail})]
      				</BOUCLE_articles_lies>
      				
      				<div class="title">
      					<li><a href="#URL_ARTICLE{#ID_ARTICLE_LIE}">#INFO_TITRE{article,#ID_ARTICLE_LIE}</a></li>
      				</div>
      				</div><!--/post-->
      				</BOUCLE_articles_lies2>
      					
      					</ol></div>
      				</B_articles_lies2>
      				</BOUCLE_types_liaisons>

      Merci encore !!!
      Bien cordialement
      François

    • Juste pour information, on peut récupérer le logo de l’article (ou de n’importe quel autre objet) en mettant l’#ID_OBJET entre accolades : #LOGO_ARTICLE{25} ou #LOGO_ARTICLE{#ENV{id_article}}, même sans boucle donc.

    Répondre à ce message

  • 4

    Bonjour à tous,
    J’utilise SPIP 3.2 et le plugin a2a.
    Je veux permettre aux auteurs de lier des articles dans l’espace public et j’utilise ce formulaire
    dans une boucle article :

    #FORMULAIRE_NAVIGATEUR_A2A{article,#ID_ARTICLE}

    Le formulaire s’affiche bien avec le choix dans l’arborescence mais la validation ne génère
    pas la liaison.

    Merci pour une idée qui vous viendrait ?

    • Je dirais que ce serait plutôt #FORMULAIRE_AJOUTE_A2A, mais sans garantie.

    • Seul #FORMULAIRE_NAVIGATEUR_A2A{article,#ID_ARTICLE}
      me donne l’interface complète.

      #FORMULAIRE_AJOUTE_A2A me renvoit seulement :

    • Le plugin ne liant que des articles, vous avez envoyé un argument en trop.

      #FORMULAIRE_NAVIGATEUR_A2A{#ID_ARTICLE}

      suffit et fonctionne.

    • Oui cela fonctionne !
      Merci Maïeul, et bonne année 2018 !

    Répondre à ce message

  • 6

    Bonjour à tous,

    Merci pour cette application qui m’est vraiment très utile dans un site qui compte près de 1000 articles, et que j’utilise dans une version SPIP 3.1.1
    Tout fonctionne très bien, mais dans l’interface privée de l’article les fonctions « Délier l’article » et « Monter, descendre » dans l’ordre des rangs ne fonctionnent pas, ce qui est gênant.

    Si quelqu’un à rencontré le même problème ?
    Merci de vos lumières

    • « Chez moi cela marche ». Dans un premier temps, il faudrait tester en désactivant les autres plugins pour voir s’il y éventuellement conflit.

    • Oui merci ! pour cette réponse rapide, mais j’utilise exactement 50 plugins(en plus des génériques).
      Quels seraient, selon vous, ceux(ou celui) qui pourraient éventuellement poser problèmes ?

    • Je vais être moins précis dans ma demande :

      • la famille, le type de plugins qui pourraient poser problème

      Merci !

    • tout plugin qui ajouterai/modifierai du javascript. Ce qui fait large.

      D’où la technique de tout désactiver (en ayant fait une copie d’écran des plugins concernés) puis de réactiver par dichotomie.

      Une solution est de le faire sur une copile locale du site pour ne pas tout perdre.

    • J’ai bien reçu votre réponse visible avec son lien dans ma boite mail mais, bizarrement rien n’apparaît ici(?).
      Je vais devoir m’y atteler et migrer une copie de mon site en local.
      J’ai pas fini.
      Merci pour tous ces conseils !

    • Je sais pas pourquoi le message n’était pas validé. Voilà c’est corrigé. Bon courage.

    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