Les liens de traduction entre rubriques n’existent pas dans SPIP. Quand on pense à un site comme spip-contrib, les secteurs de langues différentes n’ont pas le même plan et des liens de traduction entre rubriques n’auraient aucun sens.
Pourtant, beaucoup de sites adoptent le multilinguisme en dupliquant le plan des rubriques de la langue principale dans les secteurs des autres langues. C’est alors tentant et censé d’afficher à l’utilisateur une liste de liens vers les autres langues.
Si on pense au site adoptant la structure stricte décrite plus haut, les « traductions » d’une rubrique sont les rubriques qui contiennent les traductions des articles de cette rubrique.
On voit alors une solution se profiler : Faire une boucle qui trouve ces rubriques en parcourant la liste des traductions des articles de la rubrique actuelle.
<BOUCLE_rub_pr(RUBRIQUES) {id_rubrique}>
ici le contenu habituel de la rubrique.
<B_art_traduits>
Ici le texte avant s'il y a au moins une traduction
<BOUCLE_art_traduits(ARTICLES) {id_trad > 0} {id_rubrique} {par lang}>
<BOUCLE_trad(ARTICLES) {traduction} {exclus}>
<BOUCLE_rub(RUBRIQUES) {id_rubrique} {doublons}>
<a href="#URL_RUBRIQUE">[(#LANG|traduire_nom_langue)]</a>
</BOUCLE_rub>
</BOUCLE_trad>
</BOUCLE_art_traduits>
Ici le texte après s'il y a au moins une traduction
</B_art_traduits>
Ici le texte s'il n'y aucune traduction de la rubrique.
<//B_art_traduits>
ici le contenu habituel de la rubrique.
</BOUCLE_rub_pr>
La boucle rub_pr est la boucle principale qui détermine dans quel rubrique on se trouve actuellement. Si on édite le squelette rubrique.html, alors elle s’y trouve déjà.
La boucle art_traduits liste les articles de la rubrique. Le critère {id_trad > 0}
nous permet de limiter l’affichage aux articles ayant au moins une traduction. C’est cette boucle qui détermine si une liste de rubrique va être affichée. C’est donc à elle que l’on ajoutera les balises « optionnelles » s’il y en a besoin.
La boucle trad cherche les traductions des articles de la rubrique.
La boucle rub va afficher un lien vers la rubrique qui contient la traduction trouvée. On utilise le critère {doublons}
pour s’assurer que l’on affiche pas deux fois la même rubrique. En effet, comme on regarde plusieurs articles de la rubrique principale, on pourrait trouver plusieurs traductions se trouvant dans la même rubrique.
Remarque :
il n’y a pas moyen de trier cette liste selon beaucoup de critère. On peut juste la trier selon les langues avec le critère {par lang}
dans la boucle art_traduits.
Nouveau critère
Pour contourner le problème des tris, on peut, à partir de [SPIP 1.8], déclarer une nouvelle version du critère {traduction}
qui fera la même chose.
C’est ce qui est fait par le code proposé dans le fichier
à insérer dans son fichier mes_fonctions.php3.
On pourra alors faire directement une boucle :
<BOUCLE_rub(RUBRIQUES)>
<hr>
#TITRE #ID_RUBRIQUE
<BOUCLE_trad(RUBRIQUES){traduction}>
<br />#PUCE #TITRE #ID_RUBRIQUE
</BOUCLE_trad>
</BOUCLE_rub>
Aucune discussion
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 : |