Configuration du plugin
Je crée un nouveau type de relation, dont la clef est « Suivant » et le titre est « Article suivant ».
Chaque article de la chaîne, sauf le dernier, est relié à l’article suivant selon ce type.
Voilà pour l’espace privé.
Côté squelettes
Je souhaite afficher l’ensemble des articles de la chaîne dans laquelle se situe l’article courant mais :
- En ne mettant pas de lien sur l’article courant.
- En mettant un attribut
rel=prev
ourel=next
pour le liens vers l’article immédiatement précédent/suivant.
Voici comme je procéde, les commentaires suivent.
<BOUCLE_article(ARTICLES){id_article}>
#SET{precedent,''}
#SET{suivant,''}
#SET{succession,#LISTE{#ID_ARTICLE}}
<BOUCLE_precedent(ARTICLES_LIES){id_article_lie=#ID_ARTICLE}{type_liaison=suivant}>
#SET{succession,#LISTE{#ID_ARTICLE}|push{#GET{succession}}}
[(#ID_ARTICLE_LIE|=={#_article:ID_ARTICLE}|oui)
#SET{precedent,#ID_ARTICLE}
]
<BOUCLE_precedents(Boucle_precedent) />
</BOUCLE_precedent>
<BOUCLE_suivant(ARTICLES_LIES){id_article=#ID_ARTICLE}{type_liaison=suivant}>
#SET{succession,#GET{succession}|push{#ID_ARTICLE_LIE}}
#SET{suivant,#ID_ARTICLE_LIE}
<BOUCLE_suivants(ARTICLES_LIES){id_article=#ID_ARTICLE_LIE}{type_liaison=suivant}>
#SET{succession,#GET{succession}|push{#ID_ARTICLE_LIE}}
<BOUCLE_suivantsr(BOUCLE_suivants) />
</BOUCLE_suivants>
</BOUCLE_suivant>
<B_succession>
<p><strong><:geek:succession_article:> :</strong></p>
<ol class='succession'>
<BOUCLE_succession(ARTICLES){id_article IN #GET{succession}}{si #GET{succession}|count|>{1}} >
<li[ class='(#EXPOSE)']>
[(#EXPOSE|non)<a href="#URL_ARTICLE"[ rel="next"(#ID_ARTICLE|=={#GET{suivant}}|oui)][ rel="prev"(#ID_ARTICLE|=={#GET{precedent}}|oui)]>]
#TITRE
[(#EXPOSE|non)</a>]
</li>
</BOUCLE_succession>
</ol>
</B_succession>
</BOUCLE_article>
- l. 1 : la boucle englobante du squelette, je masque ici les autres contenus.
- l. 2-3 : deux variables dans lesquelles on stockera les numéros de l’article précédent et de l’article suivant.
- l. 4 : liste dans laquelle on va stocker les id de chaque article de la chaîne. On initialise la liste avec le numéro de l’article courant.
- l. 5 et 11 : on cherche l’article précédent.
- l. 6 : on ajoute l’article précédent à la liste des articles de la chaîne, en début de liste.
- l. 9 : on indique l’id de l’article immédiatement précédent dans la variable
precedent
. Notez le test qui permet de jouer avec la récursion de la l. 10 sans changer à chaque foisprecedent
. - l. 13 à 20 : la même chose que l. 5 à 11, mais pour les articles qui suivent dans la chaîne. Notez qu’on étend la liste vers la fin, et non pas vers le début, comme précédement.
- l. 23 à 38 : boucle
(ARTICLES)
classique, mais on choisit comme < code>id_article ceux listés dans le tableau. Notez que{id_article IN …}
. On notera :- l. 24 : l’utilisation de
#EXPOSE
pour styler différemment l’article courant, de même l. 25 et 27 pour n’afficher le liens que sur les articles différent de l’article courant. - l. 25
[ rel="next"(#ID_ARTICLE|=={#GET{suivant}}|oui)]
et son comparse[ rel="prev"(#ID_ARTICLE|=={#GET{precedent}}|oui)]
qui permet d’ajouter l’attributrel
à la balise<a>
, si besoin.
- l. 24 : l’utilisation de
Vos commentaires
# Le 24 juin 2019 à 22:40, par Naema
En réponse à : Succession d’articles avec A2A
Merci beaucoup pour le partage de votre technique — c’est impeccablement efficace.