Retour au format normal
10. Code des caractéristiques des articles et des rubriques

Plusieurs fonctionnalités du site sont basées sur la notion de caractéristique, pour les articles et les rubriques. Les utilisations de ce champ sont décrites dans les pages La zone "Comportements de l'article" et Administrateurs : les caractéristiques d'une rubrique.

Note : La version actuelle du site est basée sur spip 1.5.2 ; dans spip 1.7, les champs "extra" pourraient être utilisés à la place des caractéristiques.

Le code décrit dans cette page se trouve dans les squelettes, que vous pouvez télécharger : skel-monde-solidaire1.zip (242 Ko)

-  Le premier besoin rencontré a été de stocker des informations supplémentaires (les caractéristiques) au sein des articles. La zone de sous-titre a été utilisée.
-  Puis le même besoin s'est fait ressentir pour les rubriques ; ne trouvant pas de champ inutile dans spip_rubriques, les caractéristiques ont été incrustées dans le texte des rubriques.

Cela explique qu'il y ait deux syntaxes différentes :
-  Pour les articles, on met clé=valeur (ex : lang=en)
-  Pour les rubriques, on met clé = "valeur" (ex : lang="en"). Les caractéristiques des rubriques utilisent un langage à balise maison (une sorte de XML simplifié), dont l'interpréteur se trouve dans mondeSol/meta/lib/tig/tigML.php (la doc. de tigML se trouve sur cette page). Les lignes "@charac" et "@/charac" qui encadrent les caractéristiques d'une rubrique sont des instructions tigML.

Dans les squelettes, on y accède par deux méthodes venant de mondeSol/meta/php/mondeSolFunctions.php : getCharac() et getHeritableCharac(). Dans ces méthodes (voir le code), on indique si la caractéristique à récupérer est pour une rubrique ou un article, et on spécifie le nom de la caractéristique.
-  getCharac() va seulement chercher la caractéristique pour la rubrique ou l'article spécifié.
-  getHeritableCharac() va en plus vérifier si la caractéristique n'a pas été définie dans la hiérarchie des rubriques ; la première caractéristique trouvée, en montant dans la hiérarchie des rubriques, est retournée.

Les noms des caractéristiques sont paramétrés, et stockés dans la variable $OUR_GLOBALS, présente dans mondeSol/meta/php/globals.php. _¨Par exemple, $OUR_GLOBALS["str_country"] = "pays"

Le calcul de certaines pages fait plusieurs fois appel aux mêmes caractéristiques. Donc chaque fois qu'une caractéristique est calculée, elle est mise en cache dans $OUR_GLOBALS.

Thierry, 20 novembre 2003