[SPIP 1.8] SPIP ne permet pas de définir des liens de traduction entre rubriques (seulement entre articles). Or, certains sites ont une structure correspondant exactement à ce besoin, car leur structure multilingue est basée sur une séparation des rubriques par langues.
La méthode suivante permet d’établir assez simplement des liens entre les rubriques, tout en facilitant le classement des rubriques dans la gestion dans l’espace privé.
Principe
Le principe consiste, tout simplement, à numéroter les rubriques qui se correspondent avec le même numéro.
Voici par exemple une structure de site :
Français
- 1000. Ma rubrique 1
- 1010. Sous-rub 1
- 1020. Sous-rub 2
- 2000. Ma rubrique 2
- 3000. Ma rubrique 3
English
- 1000. My first section
- 1010. First sub-sec
- 1020. Second sub-sec
- 2000. My second section
Deutsch
- 1000. Meine erste Rubrik (six ans l’Allemand, quand même !)
Italiano
- 2000. La secunda rubrica (0 année d’Italien)
Nous avons donc un site multilingue très classique : des grands secteurs par langue (français, anglais, allemand, italien). Chaque langue contient sa propre structure. Le principe consiste simplement à utiliser comme numérotations de titres de rubriques les mêmes numéros lorsqu’il s’agit des rubriques équivalentes. Pour que le système reste simple, nous adoptons une numérotation aussi logique que possible.
Notons qu’il n’est pas nécessaire d’avoir toutes les rubriques traduites dans toutes les langues.
Squelettes
La méthode permettant d’afficher, dans chaque rubrique, la liste des rubriques qui en sont la traduction est très simple :
— on extrait le numéro du titre de la rubrique ;
— on cherche toutes les rubriques dont le titre commence par le même numéro.
Grâce au nouveau moteur de SPIP 1.8, cela se réalise dans les squelettes en une seule commande, à l’intérieur même de la boucle de sélection.
Cependant, nous avons besoin d’un nouveau filtre, qui, à l’inverse de supprimer_numero
(qui renvoie le titre sans le numéro), va renvoyer le numéro sans le titre. Appelons-le : extraire_numero
.
Installons-le dans mes_fonctions
:
Si l’on applique ce filtre au titre de la rubrique « 1010. Sous-rub 1 » :
le résultat sera : « 1010 ».
Dans notre squelette de rubrique, plaçons-nous à l’intérieur de la boucle principale :
La boucle principe affiche le titre de la rubrique en cours, la seule chose à vérifier étant que le titre est bien filtré par supprimer_numero
.
Nous avons maintenant besoin de rechercher les rubriques dont le titre commence par le même numéro que la rubrique principale. Le critère est :
Le moteur de SPIP 1.8 permet ce genre de chose : à l’intérieur de nos critères, nous pouvons utiliser une pseudo-balise d’une boucle précédente, celle-ci étant même filtrée si nécessaire !
Si notre rubrique principale est la « 1010. Sous-rub1 », cela revient à demander les rubriques correspondant au critère :
Ce type de critère, avec un double symbole « égal », signifie une expression régulière. C’est-à-dire que, au lieu de l’égalité, on peut comprendre « qui contient la chaîne de caractères suivants ». La chaîne est :
— ^
: « qui commence par »
— 1010
: « les caractères 1010 ».
Nous cherchons donc ici toutes les rubriques dont le titre « commence par 1010 ». Nous obtenons :
— « 1010. Sous-rub 1 »
— « 1010. First sub-sec »
Pour exclure des résultats la rubrique principale, il suffit d’ajouter le critère {exclus}
.
Ce qui donne par exemple :
Remarques
On peut encore jouer avec les numéros pour trouver les parents et les enfants d’un élément, même si dans SPIP de tels éléments n’ont pas, habituellement, de parents et d’enfants. Par exemple, on peut l’utiliser pour hiérarchiser des mots-clés.
— 1000. France
— 1100. Ile-de-France
— 1110. Hauts-de-Seine
— 1111. Issy-les-Moulineaux
Il est assez simple de trouver les « enfants » de « France » : le premier numéro est identique, le second est libre, les suivants sont zéro. Le « parent » de « Ile-de-France » suit la logique inverse : le premier chiffre est identique, et les suivants sont à zéro. Avec des fonctions très simples pour extraire les numéros, et des expressions régulières adaptées, ça n’est pas extrêmement compliqué à réaliser.
Il faut, enfin, rappeler qu’une telle astuce ne doit être utilisée que si elle respecte la structure originelle des éléments de SPIP. Ici, c’est le cas : il s’agit simplement de numéroter les rubriques, en respectant par ailleurs la hiérarchie des rubriques dans la base de données. Sinon, une méthode trop « bidouillesque » qui ne respecterait pas la structure habituelle de SPIP rendrait le site très complexe à maintenir.