Bonjour !
Je viens d'écrire un bout de code Spip qui me déplaît beaucoup.
Il s'agit d'ajouter des liens en plus à certains articles, en dehors du
système de menu automatique.
Par exemple les liens à droite sous "See also:" sur la page
http://www.taize.ch/spip/en_article7.html
Créer un "groupe" de pages qui se font référence mutuellement est bien sûr
simple. Mais j'ai besoin que ces liens soient dans un sens seulement. C. à
dire, je veux un lien sur la page "Young Adult Meetings" qui pointent vers
"Contacting Taizé", mais je ne veux pas de lien dans l'autre sens.
Pour résoudre le problème, j'ai crée deux groupes de mots-clés, "Pointers"
et "PointedTo". Pour relier des documents je crée d'abord dans chacun de ces
groupes un mot-clé **portant le même titre**. Ensuite je attache le mot clé
"PointedTo" aux articles qui doivent être la cible des liens et le mot
"Pointer" aux articles dans lesquels les liens doivent apparaître.
Puis le code (qui me déplaît tant) dans le squelette :
<BOUCLE_article_principal(ARTICLES) {id_article}>
...
<B_pointers>
<div id="seealso">
<:see_also:>
<ul>
<BOUCLE_pointers(MOTS){type=Pointers}{id_article}>
<?php $pointer=#TITRE; ?>
<BOUCLE_pointedto(MOTS){type=PointedTo}>
<?php $pointedto=#TITRE; ?>
<BOUCLE_seealso(ARTICLES){id_mot}{id_secteur}{par titre}>
<?php if ($pointedto==$pointer){
echo '<li><a
href=#URL_ARTICLE>[(#TITRE|supprimer_numero)]</a></li>';
} ?>
</BOUCLE_seealso>
</BOUCLE_pointedto>
</BOUCLE_pointers>
</ul>
</div>
</B_pointers>
...
<BOUCLE_article_principal>
Le code me déplaît beaucoup car je me rends bien compte que la boucle
"seealso" tourne par tous les articles qui ont un mot clé dans le groupe, et
j'arrive pas à restreindre la boucle efficacement. Le plus de mots qu'on
ajoutera dans ce groupe, le plus lent cela va devenir.
Pensez-vous que j'ai fait le mieux possible ?
Avec Spip 1.8 il sera peut-être possible de faire mieux (utiliser les
balises dans les boucles ...?)
Avez-vous une autre solution ?
merci !
Paolo