Principe du typage entre relations
Deux articles peuvent être reliés ensembles par plusieurs types de relations, par exemple :
- un article peut être la suite d’un autre.
- un article peut parler d’un sujet connexe à un autre article.
- un article peut être une correction d’un autre article.
- etc.
Le(s) webmestre(s) du site va donc pouvoir définir des types de relation entre articles.
Chaque type de relation se définit par :
- une clef unique qui sert pour le webmestre dans les boucles. Cette clef ne doit pas contenir d’espaces ni de caractères spéciaux ou accentués.
- un titre, qui sert pour les rédacteurs, afin de choisir le type de relation. Le titre peut le cas échéant être traduit dans la langue du rédacteur.
Par exemple nous pourrions avoir comme clef « suite » et comme titre « article suivant ».
Définition des types
Un webmestre peut se rendre dans la page de configuration des types via le Menu « Configuration » -> « Relations entre articles ». Il accède alors au formulaire suivant :
Le premier champ doit contenir l’ensemble des types de liaisons. Chaque type se situe sur une ligne, sous la forme : clef,titre
.
Par exemple :
suite,Article suivant
connexe,Article connexe
correction,Correctif
Le titre peut être une chaîne de langue : module:chaine
(voir la documentation sur les chaînes de langues).
Si vous essayez de supprimer un type de liaison utilisé, le plugin vous en avertit et vous donne la liste des articles qui utilisent ce type de liaison : il ne vous reste plus qu’à changer les liaisons ayant ce type.
Il est possible de rendre obligatoire le typage de liaison. Si vous cochez la case alors qu’il existe des articles avec des liaisons non typées, le plugin vous en averti : il ne vous reste plus qu’à typer les liaisons (ou les supprimer).
Il est également possible de permettre de relier plusieurs fois deux articles en ayant un typage différent. Par exemple relier les articles 1 et 2 selon le type « article suivant » « sujet connexe ». Si vous tentez de désactiver cette option alors qu’il existe plusieurs relations entre 2 mêmes articles, le plugin vous en empêche et vous fournit la liste des relations problématiques. Il ne vous reste plus qu’à choisir un type de relations.
Par ailleurs, il est possible de définir des types non modifiables. Pour cela, il suffit de définir la variable globale $a2a_types_liaisons
dans le fichiers mes_options.php
. Cette variable est un tableau PHP clef/valeur :
$GLOBALS['a2a_types_liaisons'] = array(
'suite'=>'Article suivant',
'connexe'=>'Article connexe',
'correction'=>'Correctif'
);
Pour le rédacteur
Le formulaire d’ajout d’une relation permet désormais d’en préciser le type. Par ailleurs, la liste des relations d’un article permet de modifier le typage d’une relation, en cliquant sur « modifier » à côté du type.
Cependant, il faut faire attention aux relations entre article dans les deux sens. Si vous modifiez le type de relation entre l’article 1 et l’article 2, le type de relation entre l’article 2 et l’article 1 n’est pas modifié.
Dans les squelettes
La boucle (ARTICLES_LIES)
peut prendre le critère {type_liaison=clef}
pour préciser le type de liaison souhaité. Par exemple pour lister les articles liés avec le type « connexe » [1].
<B_connexes>
<ol>
<BOUCLE_connexes(ARTICLES_LIES){id_article}{type_liaison=connexe}{par rang}>
<li><a href="#URL_ARTICLE{#ID_ARTICLE_LIE}">#INFO_TITRE{article,#ID_ARTICLE_LIE}</a></li>
</BOUCLE_connexes>
</ol>
</B_connexes>
Par ailleurs on dispose au sein de la boucle (ARTICLES_LIES)
de la balise #TYPE_LIAISON
, sur lequel on peut appliquer le filtre |a2a_traduire_type_liaisons
pour obtenir le titre du type de liaison (par exemple « Article connexe » pour le type « connexe »).
On peut également utiliser #TYPES_LIAISONS en combinaison avec la boucle (DATA)
de SPIP 3 pour lister les types de liaisons. Ainsi, pour afficher tout les articles liés en séparant les types de liaisons :
<BOUCLE_types_liaisons(DATA){source tableau, #TYPES_LIAISONS}>
<B_articles_lies>
[<h2>(#CLE|a2a_traduire_type_liaisons)</h2>]
<ol>
<BOUCLE_articles_lies(ARTICLES_LIES){id_article}{par rang}{type_liaison=#CLE}>
<li><a href="#URL_ARTICLE{#ID_ARTICLE_LIE}">#INFO_TITRE{article,#ID_ARTICLE_LIE}</a></li>
</BOUCLE_articles_lies>
</ol>
</B_articles_lies>
</BOUCLE_types_liaisons>
Enfin, la balise #ARTICLES_LIES
peut prendre un deuxième argument précisant le type de liaison : #ARTICLES_LIES{'',connexe}
;
depuis la version 3.1.0, il en est de même pour la balise #ARTICLES_LIANT
: #ARTICLES_LIANT{'',connexe}
.
Discussions par date d’activité
9 discussions
bonjour,
une autre question : j’ai voulu « imposer de typer les relations »
j’ai donc typé toutes les liaisons non typées.
J’arrive alors à un blocage sur certaines. : elles apparaissent bien typées dans toutes leurs relations et par ailleurs, j’ai une liste d’articles sans nom.
J’ai idée que j’ai du supprimer des articles sans d’abord supprimer (ou sans supprimer des deux côtés) les liens avec d’autres articles.
Je suppose qu’il faut aller voir du côté de PhpMyAdmin mais ne pas y faire de bêtises ?
Claude
Répondre à ce message
Bonjour,
J’ai choisi des typages de forme
image1,<:analogie_image:>
pour des sites multilingues, mais l’affichage dans les articles donne :
analogie_image:>
au lieu de (pour le français)
image analogue
Le multilinguisme ne serait pas accepté actuellement ?
Claude
Répondre à ce message
Bonjour,
punaise, plus d’une heure pour trouver le problème : la balise pour récupérer l’ID the l’article lié est #ID_ARTICLE_LIE et non pas #ARTICLE_LIE comme indiqué ici...
Je suis en SPIP 3.0.11. Je n’ai trouvé la solution qu’en me rendant compte de ça sur la doc de a2a, pas A2A ici...
Merci.
V.
effectivement, une grosse coquille :-(
désolé et merci pour le rapport.
Y’a pas de mal, il était une heure du matin, j’étais un peu fatigué :)
Merci d’avoir corrigé rapidement. Ce plugin est vraiment très bien, et fonctionne de manière très intuitive. Il demande cependant d’avoir une idée claire de ce qu’on veut faire avec le typage de relations, mais ça c’est une règle de base avec ce genre de choses.
En fait je l’utilise (entre autres) pour remplacer MOMO qui a disparu avec SPIP 3, en utilisant des articles comme définitions de termes (concepts) que je peux lier à d’autre articles. C’est encore mieux que MOMO ou Mots Partout, finalement.
J’avais prévu d’utiliser Polyhiérarchie, mais avec le typage de relations, on a beaucoup plus de liberté et de possibilités qu’avec la seule relation verticale que polyhiérarchie propose. Bon sauf qu’évidemment, A2A ne permet pas de lier autre chose que des articles... donc les mots clés sont quand même nécessaires.
oui, cela fait parti des projet de développer O2O pour ne pas être dépendant du type d’objet. Mais c’est une grosse question...
Des nouvelles de O2O ?
L’idée serait pour moi de lier des auteurs avec des organisations (aussi enregistrées comme auteurs dans ma première approche). l’un pourrait être employé de l’autre, ou membre du CA, ou simple membre ... Le plugin « Contacts & Organisations » n’est pas aussi versatile que j’en aurai besoin, votre idée de lier es « Objets » ( pour moi des auteurs) avec une typologie ferait probablement tout à fait mon affaire.
Encouragements ... ;-)
pour ma part je n’ai pas le tps de m’occuper ce projet. .. et je ne crois pas avoir vu passer de projet ce sens.
Dommage, mais il y a pas de mal, maerci pour les partages déjà disponibles.
Quand j’aurai le temps moi aussi d’apprendre à faire des plugins ...
Répondre à ce message
Bonjour,
il manque un « > » à la fin de la ligne 5 du dernier exemple.
Cdlt
merci, corrigé !
Répondre à ce message
Je viens de mettre en place ce plugin (SPIP 3.0.10 [20600]) deux petits soucis :
- les AND sont collés au identifiants des articles dans les requêtes SQL, dans action/a2a.php, remplacer ’AND par ’ AND
- dans la base, mettre chaine vide par défaut au lieu de null pour le champ type_liaison
précision, je suis en sqlite.
à part ça, super !
merci, j’avais effectivement oublié de tester avec a2a
intégrés par http://zone.spip.org/trac/spip-zone/changeset/74200 et http://zone.spip.org/trac/spip-zone/changeset/74201
Répondre à ce message
Hello
On pourrait le voir dans le chargeur auto de spip 3 ? je le trouve pas pour le moment ...
il faut que tu cherche dans les plugins « en test ». Mais vu qu’on a pas de retour negatif, je met en stable.
Ah oui merci.
Répondre à ce message
une tite copie après passage en 3.0.5, vidages des caches
super zarb ... il faudrait que vous m’envoyiez un email privé avec des accés...
ok, la version 2.0.1 du plugin le résout : « le pb venait du fait qu’il n’y avait qu’un type déclaré. »
Merci
Répondre à ce message
bonjour,
j’utilise déjà le typage, mais le passage à la dernière version 2.0.0 ne me permet plus de connaitre le typage (pourtant conservé dans mes boucles).
Il me permet bien de choisir un typage mais il ne me permet pas de connaitre ou de modifier un typage.
avec a2a_v2 Revision : 66532 du 7 octobre 2012
il faudrait être plus clair. Tu veux dire que le type n’apparaît plus sur le formulaire ?
oui,
pour une nouvelle liaison, je peux choisir le type (le formulaire est correct)
mais une fois la liaison faite ou pour les liaisons existantes, il n’apparait plus d’indication du type (et donc pas possibilité non plus de la modifier)
Les mises à jour de version en spip 3.0.4 sont aussi pénible et j’ai du recharger le plugin depuis le zip. Promis je passe en 3.0.5 dans le 1/4 d’heure :)
Tu peux mettre une copie d’ecran ? je viens de retester et aucun souci chez moi...
par contre je me demande si effectivement le passage à3.0.5 resoudrait pas une partie du pb (a cause du
#RANG
Répondre à ce message
Bonjour,
Cette solution me parait super intéressante, par exemple pour simuler un article s’étalant sur plusieurs pages, qui serait un seul article affiché sur le site public, alors que l’admin ce serait plusieurs articles liés entre eux par C est la suite de l’article B qui est la suite de l’article A...
oui, tout à fait, c’est ce que j’utilise sur mon site : http://geekographie.maieul.net/Stemma-avec-TikZ-1-principes-de
pour info, je viens de publier un tutoriel sur la technique utilisée.
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 :
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.
Suivre les commentaires : |