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

  • On peut maintenant qualifier (avec un mot, un code etc.) le type de liaison entre les articles avec un champ « type_liaison » de type chaîne de caractère. À chaque webmestre ou équipe éditoriale d’y mettre le sens qu’elle souhaite.

    Merci de tester pour voir si tout va bien !

    L’interface (dans l’espace privé) n’est pas très ergonomique car j’ai voulu la retoucher le moins possible dans un premier temps, et l’interface existante était peu adaptée à cette nouvelle donnée, mais on pourrait réfléchir à quelque chose de plus pratique.

    Répondre à ce message

  • 6

    Connaissez-vous celui-ci ?
    http://plugins.spip.net/lire-aussi

    Y a t-il un rapport ou un fondement commun ?
    Cela y ressemble beaucoup, sauf à priori sur le tri.

    • Oui je connais le plugin Lire aussi qui a été développé à la même période que a2a. Quand j’ai découvert que quelqu’un travaillait sur un plugin similaire je me suis dit que cela ne servait à rien de rendre public a2a. Mais entre temps, Eric m’a fait savoir que a2a propose plus de fonctionnalités avec le trie et la possibilité de rechercher l’article à lier sans avoir à connaître son numéro. De plus a2a utilise les formulaires CVT et il déclare ses tables comme il est recommandé de le faire avec SPIP 2.0. Tout cela rend son code plus pérenne.

      Voilà les raisons qui font que nous avons décidé de rendre public le plugin a2a qui est issu d’un travail collectif à l’inverse de Lire aussi.

    • Bonjour,

      Votre plugin ne propose toutefois pas une option du plugin Lire aussi qui me semble essentielle, à savoir que lorsque l’article id. 55 est lié à l’id 66, l’inverse est également vrai, de sorte qu’il n’y a pas besoin de saisir l’information dans les deux articles.

      Envisagez-vous de reprendre cet élément dans votre plugin ?

      Par avance merci de votre réponse et merci pour votre travail

    • Salut,

      Oui a2a n’affiche pas les liens de façon bidirectionnelle dans l’espace privé et c’est voulu. Le but est de garder une interface simple. Cela deviendrait, à mon avis, trop « lourd » si le plugin affichait deux listes (les articles liés à celui qu’on consulte + les article qui pointent vers celui-ci). De plus, je pense que la notion de lien ponctuel entre les articles de a2a ne doit pas être réciproque. Je peux très bien vouloir lier A à B mais pas B à A... Une piste possible serait d’afficher la liste des articles qui pointent vers l’article en cours dans la colonne de navigation dans l’espace privé.

      Par contre, tu peux très bien afficher ces infos dans tes squelettes à l’aide d’une simple boucle ;)

      ++

    • certes.

      Mais ce que j’aurais souhaiter c’est de pouvoir choisir si je veux un lien bidirectionnel, pour éviter la double saisie lorsque c’est le cas. C’est d’ailleurs généralement le cas pour moi.

      Est-ce envisageable ?

      Aucune interface n’est prévue à cette fin dans le plugin Lire aussi. C’est fait automatiquement.

      Je comprends qu’il faille laisser la possibilité de liens unidirectionnels.

      Mais, n’y aurait-il pas moyen d’ajouter un module cfg ou on peut effectuer ce réglage ?

      Merci

    • Bon ben j’ai une bonne nouvelle pour toi... Le plugin gère aussi les liens bidirectionnels depuis 4 semaines ;) Kent1 a jouté ça mais ne l’avait pas documenté, je viens de m’en rendre compte. J’ajoute ça à la doc tout de suite.

      Elle est pas belle la vie ? ^^

      ++

    • Bonjour,

      Malgré l’ajout de la fonctionnalité de bidirectionnalité, je ne trouve pas le champ « Lier les articles des deux cotés » dans mon espace privé. Y a t-il une solution ?
      Merci d’avance !

    Répondre à ce message

  • Bonjour,
    La recherche arborescente propose tous les articles, et notamment les articles supprimés (ou à la poubelle). Y a t-il un moyen pour empêcher ça ?

    Répondre à ce message

  • Bonjour,

    J’ai bien aimé ce plugin pour montrer des analogies entre des logos d’articles (un catalogue d’affiches)

    j’essaie de faire une page qui affiche des séries d’articles liés. J’y arrive plus ou moins avec cette boucle barbare :

    		<BOUCLE_globale(ARTICLES) {id_rubrique}>
    			
    <BOUCLE_doublets(ARTICLES) {id_article} {doublons A} {doublons B}>
    
          <B_les_articles_lies>
    <div>
    
                  	<a href="[(#URL_ARTICLE)]">[(#LOGO_ARTICLE)]</a>
          <BOUCLE_les_articles_lies(ARTICLES_LIES){id_article}{par rang}>
                  <BOUCLE_article_lie(ARTICLES){id_article = #ID_ARTICLE_LIE} {doublons B}>
                  		<BOUCLE_doublons(ARTICLES) {id_article} {doublons A}>
                  		<a href="[(#URL_ARTICLE)]" >[(#LOGO_ARTICLE)]</a>
                  		</BOUCLE_doublons>
                  </BOUCLE_article_lie>
          </BOUCLE_les_articles_lies>
    
    </div>
          </B_les_articles_lies>
          
    </BOUCLE_doublets>
    
    		</BOUCLE_globale>

    1/ pas moyen d’utiliser le critère {pagination} sans multiplier l’affichage de mêmes séries ; donc j’ai une seule page (118 séries de 2 à 6 articles liés pour 3’000 articles) lourde à calculer :)

    2/ un petit souci lorsque les séries ne sont pas transitives (je ne sais si le terme convient bien) :
    Rarement mais parfois tout de même, j’ai des affiches dans deux séries

    A10 A11 A13 (qui ont un bandeau identique)

    et

    A10 A25 A26 (qui ont une photo principale identique)

    Donc l’article A10 ne peut plus apparaitre qu’une fois

    Ah oui, la question : comment faire plus simple et plus sur ?
    Y’a-t-il une autre boucle pour capter une série et la mettre en mémoire que mon approche.

    Merci d’avance

    Répondre à ce message

  • Bonjour,

    D’abord, merci pour ce plugin.
    Il y a par contre quelque chose d’assez bizarre avec le champs (array) #ARTICLES_LIES

    En effet il fonctionne bien quand il est utilisé seul en 1re boucle, mais si on (ou SPIP) rajoute un autre critère, la plus rien.
    Par exemple, je veux afficher les articles liés classés par rubrique, voici ce que j’avais fait au départ :

    <B_les_articles_lies>
    	<h2>Pages associées</h2>
    	<BOUCLE_les_articles_lies(ARTICLES_LIES){id_article}{par rang}>
    		<BOUCLE_article_lie(ARTICLES){id_article = #ID_ARTICLE_LIE}>
    			<BOUCLE_rubrique_article_lie(RUBRIQUES){id_rubrique}{doublons}>
    				<h3>#TITRE</h3>
    				<ul class="liste_pages_associees">
    				<BOUCLE_les_articles_lies_par_rub(ARTICLES){id_rubrique}{id_article IN #ARTICLES_LIES}>
    					<li><a href="#URL_ARTICLE">#TITRE</a></li>
    				</BOUCLE_les_articles_lies_par_rub>
    				</ul>
    				<!-- BLOC SEPARATEUR -->
    				<div class="separateur"><hr /></div>
    				<!-- FIN BLOC SEPARATEUR -->											
    			</BOUCLE_rubrique_article_lie>
    		</BOUCLE_article_lie>
    	</BOUCLE_les_articles_lies>
    </B_les_articles_lies>		

    ma liste d’articles reste définitivement vide.
    Par contre si j’affecte via #SET un #ARRAY, ce qui en théorie est la même chose, ca fonctionne :

    #SET{artlies, #ARRAY}
    <BOUCLE_var_articles_lies(ARTICLES_LIES){id_article}{par rang}>
    	#SET{artlies, #GET{artlies}|push{#ID_ARTICLE_LIE}}
    </BOUCLE_var_articles_lies>
    
    <B_les_articles_lies>
    	<h2>Pages associées</h2>
    	<BOUCLE_les_articles_lies(ARTICLES_LIES){id_article}{par rang}>
    		<BOUCLE_article_lie(ARTICLES){id_article = #ID_ARTICLE_LIE}>
    			<BOUCLE_rubrique_article_lie(RUBRIQUES){id_rubrique}{doublons}>
    				<h3>#TITRE</h3>
    				<ul class="liste_pages_associees">
    				<BOUCLE_les_articles_lies_par_rub(ARTICLES){id_rubrique}{id_article IN #GET{artlies}}>
    					<li><a href="#URL_ARTICLE">#TITRE</a></li>
    				</BOUCLE_les_articles_lies_par_rub>
    				</ul>
    				<!-- BLOC SEPARATEUR -->
    				<div class="separateur"><hr /></div>
    				<!-- FIN BLOC SEPARATEUR -->											
    			</BOUCLE_rubrique_article_lie>
    		</BOUCLE_article_lie>
    	</BOUCLE_les_articles_lies>
    	
    </B_les_articles_lies>		

    J’avoue m’être un peu arraché les cheveux, certes au final ca marche mais si quelqu’un a une idée du pourquoi du comment je suis preneur :)

    Merci
    a+

    Répondre à ce message

  • 6

    La recherche fonctionne mais quand je lie il ne se passe rien, mon choix ne s’affiche pas.

    Peut il y avoir un rapport avec le fait que je travaille en local ?

    • Salut Naomed,

      Exact le dernier commit avait itroduit ce bug. Ca vient d’être corrigé, prends la nouvelle version par svn ou dans 1h le zip sur Files

    • Bonjour,

      J’utilise le plugin a2a pour lier des articles (spip2.0.10 et la dernière version de a2a) et lorsque je clique sur les liens ’monter’ ou ’descendre’, ça mouline quelques secondes mais au final il ne se passe rien : aucun changement dans l’ordre de présentation des articles.

      D’où cela peut-il venir ?

      micmoren

    • Merci pour l’info, le bug est corrigé :

      http://zone.spip.org/trac/spip-zone/changeset/34167

      Il te faudra mettre à jour le plugin par svn ou télécharger à nouveau le zip dans la journée.

      ++

    • Bonjour,

      Merci, cela refonctionne.
      Encore que ...
      Je n’arrive pas à faire remonter ou descendre de plus d’UN niveau : une fois une montée (ou une descente) exécutée, impossible de remonter (ou de redescendre) encore d’un niveau.
      Est-ce le fonctionnement normal ?

      Cordialement,
      micmoren

    • Corrigé :

      http://zone.spip.org/trac/spip-zone/changeset/34198

      Il n’y a plus qu’à attendre la prochaine maj des zips de la zone ++

    • Cette fois c’est parfait.

      Merci

      micmoren

    Répondre à ce message

  • 1

    Bonjour,

    J’utilise désormais régulièrement ce plugin.

    Il est très utile lorsque je recherche dans les archives du site des articles sur le même thème.

    Toutefois il est difficile à utiliser lorsque l’on recherche un article précis.

    En effet le moteur ne retourne pas nécessairement celui-ci même lorsque je saisis le titre complet.

    Comme il est impossible de saisir directement le numéro de l’article il faut souvent un temps significatif pour trouver la combinaison de mots clés qui permettent d’afficher dans la liste sélectionnable l’article voulu.

    Ce pourrait être des pistes pour une prochaine version.

    Encore merci.

    Valéry

    • Salut Valéry,

      Bonne idée, je l’ai ajouté au plugin :

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

      ++
      b_b

    Répondre à ce message

  • 1

    Merci pour ce plugin que je viens de mettre en place sur taurillon.org : la fonction de recherche est extrêmement pratique.

    Elle pourrait être améliorée en ne cachant pas les résultats de la recherche lorsque l’on clique sur « Lier ». En effet je cherche généralement à lier plusieurs articles sur un même thème et naturellement ils figurent tous dans les résultats de la recherche que je dois par conséquent lancer plusieurs fois. Voilà juste une idée pour une prochaine version mais vraiment merci pour cette fonctionnalité qui apporte un petit plus appréciable pour un site (et potentiellement susceptible d’augmenter le nombre de pages vues :-)

    • Bonjour Valéry et merci pour ton commentaire,

      Elle pourrait être améliorée en ne cachant pas les résultats de la recherche lorsque l’on clique sur « Lier ».

      Cela pourrait être envisageable mais il faudrait effectuer pas mal de changements dans le plugin car la liste des résultats de la recherche est affichée dans le formulaire CVT du plugin. Ce formulaire fonctionnant en ajax on « perds » la recherche à chaque soumission du formulaire...

      Le plugin est sur la zone, n’hésite pas à y apporter des améliorations si tu as des idées.

      ++

    Répondre à ce message

  • 1

    Est ce que ça lie les articles de façon « réciproque » ?
    Je lie B et C à l’article A
    Si j’affiche C, est ce que A et B sont affichés automatiquement ou bien faut il faire la manip pour chaque article A puis B puis C ?

    • Le lien entre les articles n’est pas réciproque. Dans l’espace privé, si A est lié à C tu ne verras pas le lien sur la fiche de C. Le but est bien de créer des liens ponctuels entre des articles (et non pas de créer des pseudos groupes d’articles comme avec les mots clés).

      Côté public, tu peux très bien afficher les articles liés à A (donc B et C) sur la page de celui-ci. Et tu es libre de faire ce que tu veux sur la page de C (afficher les articles liants ou non).

    Répondre à ce message

  • 1

    Va t il être intégré à Sarka Spip ?

    • Oui c’est en cours, Eric l’a déjà fait sur la version de dev de sarka-spip. Cela devrait être en ligne dans pas trop de temps.

    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