Comme mentionné au début du manuel de réference et dans la documentation sur le multilinguisme, SPIP permet de gérer des variantes des squelettes, par langue et pour certaines rubriques uniquement.
Des mises en page différentes
On peut souhaiter, par exemple, que tous les articles d’une rubrique aient une mise en page différente : couleur de fond et taille de texte différente, informations relatives aux mots clés mises en évidence, etc. Ou encore que le contenu d’une rubrique donnée soit présentée différement parce qu’il correspond à un type de données différents : par exemple en listant tous les articles par numéro, y compris le contenu qui serait court, plutôt que les derniers en dates suivis d’une pagination de tous les articles, avec des liens vers les pages d’articles. On pourra aussi vouloir que l’interface du site soit différente selon la langue de l’article ou de la rubrique.
Les variantes de squelettes sont une manière simple — mais du coup, pas forcément très souple — permettent à SPIP de faire cela. Pour lui indiquer d’utiliser des mises en pages différentes, il suffit de réaliser des squelettes différents auxquels on donnera des noms de fichier qui indiquent quand il faut les utiliser :
- rubrique=22.html : squelette spécial pour la rubrique numéro 22,
- article-2.html : squelette pour tous les articles contenus dans la rubrique 2 et ses sous-rubriques,
- article.en.html : squelette pour les articles anglais,
- rubrique.html : squelette par défaut, s’appliquant à toutes les rubriques n’ayant pas de squelette particulier, mais dont la présence est obligatoire dans un répertoire pour que les variantes de squelettes soient prises en compte.
Ordre exhaustif des variantes de squelette
Prenons l’exemple des squelettes d’article, avec des valeurs données de langue et de rubriques (mais l’explication ci-dessous reste valable pour les squelettes de rubriques ou les brèves, et bien sûr, quelles que soient les langues et les numéros de rubriques).
Rappellons avant tout que SPIP recherche d’abord le répertoire où il prendra le squelette, comme détaillé dans « Où placer les fichiers de squelettes ? », en cherchant s’il existe un fichier article.html. Il ne faut donc pas créer de variante de squelette (par exemple un fichier article.cs.html) sans créer dans le même répertoire un fichier article.html, au risque de voir notre variante ignorée au profit du squelette générique d’un répertoire de priorité moindre.
Si ce fichier existe, SPIP utilise les fichiers de squelettes selon leur nom en commençant par « les plus précis », avec précédence du rubricage par rapport à la langue. Voici donc l’ordre (par priorité décroissante) dans lequel sont utilisés les fichiers de squelettes selon leur nom :
- article=8.cs.html : si ce fichier existe, il ne s’applique qu’aux articles en langue tchèque de la rubrique numéro 8 (mais pas aux articles contenus par ses sous-rubriques).
- article=8.html : si ce fichier existe, il s’applique aux articles de la rubrique 8 (sauf aux articles concernés par un fichier spécifiant aussi la langue, tel que précedemment).
- article-2.es.html : si ce fichier existe, il s’applique aux articles en espagnol contenus dans la rubrique 2 et ses sous-rubriques. Si la rubrique 8 est une sous-rubrique de la 2, si les fichiers ci-dessus existent, ils prévaudront.
- article-2.html : si ce fichier existe, il s’applique aux articles contenus dans la rubrique 2 et ses sous-rubriques (sauf aux articles concernés par les fichiers indiqués ci-dessus).
- article.vi.html : si ce fichier existe, il s’applique aux articles en vietnamien, dans toutes les rubriques (sauf aux articles concernés par les fichiers indiqués ci-dessus).
- Enfin, le fichier article.html s’applique à tous les articles qui ne sont pas concernés par les fichiers indiqués ci-dessus. Et, répétons-le, il est quoi qu’il en soit nécessaire que ce fichier existe.
Historique : Jusqu’à SPIP 1.7, SPIP 1.7.2 , si le fichier
article.htmln’existe pas, SPIP utilise alors le fichierarticle-dist.htmlqui est le fichier fourni par défaut. Voir « Qu’est-ce que les fichiers « dist » ? ».
