Des squelettes différents par groupes de mots-clés

Les mots-clés sont un des outils les plus puissants proposés par SPIP. Ils permettent d’organiser votre site selon de multiples et très diverses grilles de classement. Par défaut, SPIP ne permet l’usage que d’un seul squelette pour afficher les mots-clés [1] - sans ditinction par groupes des mots-clés -, ce qui est parfois trop peu pour exploiter à fond la puissance de l’outil. D’où la présente contribution.

Définition de l’objectif

Prenons l’exemple du site http://tchouktchouk.eu.org/, une revue de presse ferroviaire. Il utilise trois groupes de mots-clés pour conserver trois types d’informations sur les articles conservés :

  • La publication dans laquelle chacun des articles est paru (publication) ;
  • Un classement géographique (pays) ;
  • Un classement thématique (theme) ;

Nous souhaitons créer un squelette propre à chaque groupe de mot-clé. SPIP ne proposant pas cette option en natif. Voici donc une suggestion pour contourner l’obstacle [2].

Mise en oeuvre

Nous commençons par créer un jeu de squelette (un fichier .php et un fichier .html) pour chaque groupe de mot-clé. Nous les nommons pays.php/pays.html, publication.php/publication.html et theme.php/theme.html.

Il nous suffit ensuite de modifier la fonction d’écriture des URLS proposées par spip dans le fichier inc-urls-standard.php3 (ou inc-urls-html.php3 pour ceux qui utilisent les Rewrite Rules) de la façon suivante :

ou, dans la version Rewrite Rules :

Il n’est pas inutile de renommer le fichier que vous venez de modifier (par exemple inc-urls-standard-modifie.php3) et de changer l’appel à ce fichier dans le fichier inc-urls-dist.php3, en remplaçant la ligne :

par

En outre, n’oubliez pas de renommer inc-urls-dist.html en inc-urls.html. Ces deux manipulations éviteront à vos fichiers de se faire écraser à la prochaine mise à jour.

Quelques remarques

- Une méthode alternative, plus légère, est possible. Elle a l’avantage de ne pas toucher à la fonction d’écriture des urls (si vous n’aimez vraiment pas toucher au code PHP, c’est un peu plus simple). Il suffit pour cela de déplacer le « switch » dans le fichier mot.php3. Bien sûr, c’est aussi moins joli et moins compréhensible pour l’utilisateur qui regarde l’URL vers lequel on le renvoie. Pour ceux qui préfèrent cette méthode, voici ce que ça donne :

Notez qu’avec cette seconde méthode, vous ne devez créer qu’un seul fichier par squelette (les fichiers .php ne sont plus nécessaires puisque notre fichier mot.php remanié remplit leur fonction).

- Notez que le jeu de squelette mot.php/mot.html - qui n’est plus nécessaire dans notre exemple - est conservé par défaut pour le cas où on créerait un nouveau groupe de mots-clés.

- Il est évident que pour bénéficier pleinement de l’intérêt ce patch (à savoir : faire le travail de réécriture à votre place), il faut utiliser scrupuleusement la syntaxe prévue par SPIP (en utilisant la balise #URL_MOT pour afficher un URL) : pas question de bidouiller des écritures d’URL dans les squelettes (du type a href="mot#ID_MOT.html").

- Ceux qui utilisent des Rewrite Rules n’oublieront pas d’adapter leur fichier .htaccess. Dans notre exemple, nous obtenons ceci (sous apache) :

[1dans la distribution officielle de SPIP, il s’agit du couple de fichiers mot.php3 / mot-dist.html.

[2Pour ceux qui utilisent les Rewrite Rules apache, ce procédé offre en outre l’avantage de présenter des URLs publiques très explicites (et, perso, je trouve ça assez élégant).

Mise à jour de cette page : jeudi 12 avril 2018
xhtml valide | dernière mise à jour du site : 12 avril 2018 | administration