SPIP 2, prêt à bondir !

, par Matthieu Marcillaud

La sortie de SPIP 2 s’annonce plus que jamais imminente. Cet article va essayer de compléter quelques points oubliés dans les 2 articles précédents (SPIP 2 se prépare et SPIP 2 se prépare (suite)).

Not not not ! I want it !

A propos de l’écriture des squelettes SPIP, un certain nombre de points ont été sensiblement améliorés suite à l’écoute attentive des créateurs de sites.

Une demande qui revenait souvent était de pouvoir « Afficher les articles qui n’ont pas le mot clé "X" ».

Facile dites-vous ? Une petite boucle :

Oui, mais attention ! Dans cette boucle, le compilateur va afficher tous les articles qui ont au moins un mot clé soustraits de ceux n’ayant qu’un seul mot clé intitulé ’X’...

C’est parfois ce que l’on cherche, mais pas tout le temps... Ainsi, dans ces cas là, si un article n’a pas de mot clé, il n’est pas affiché. A l’inverse, s’il possède le mot clé ’X’ et un autre mot, alors il est affiché.

Dans certains cas, on souhaite plutôt dire « affiche tous les articles, sauf ceux liés à un mot clé ’X’ »

Comment fait-on ? On boucle sur tous les articles ayant le mot clé souhaité, sans rien afficher, puis on effectue une deuxième boucle qui ne tient pas compte des articles déjà présentés (dans la première boucle) grâce au critère doublons. Ce qui donne :

SPIP 2 introduit une nouvelle syntaxe pour celles et ceux qui aiment ces relations compliquées :

Pour résumer : {titre_mot != 'X'} est différent de {!titre_mot = 'X'}. Le premier affiche tous les articles ayant un mot clé, sauf ceux ayant uniquement le mot ’X’. Le second affiche les articles qui ne sont pas liés au mot-clé ’X’ (cela inclus donc ceux qui ne sont liés à aucun mot).

Les mots étaient un exemple, on peut bien sûr utiliser d’autres champs SQL. Question : que fait la boucle suivante en SPIP 2 ?

Réponse : Elle sélectionne les rubriques qui n’ont aucun article dont le titre commence par un « L » ou un « l ». Attention tout de même, cette requête utilisant une expression régulière (^[Ll]) nécessite beaucoup de calculs pour les gestionnaires de bases de données (MySQL ou un autre) et pourrait donc être gourmande en temps.

Doublon d’houblons

Parfois il est intéressant de transmettre les doublons créés dans des inclusions, des noisettes. Ceci était totalement impossible avant SPIP 2. Maintenant, toute inclusion « statique » via la balise #INCLURE peut obtenir les doublons de la page qui l’appelle en transmettant le parametre {doublons}. L’inverse, par contre, à savoir que la page appelée puisse transmettre des doublons créés en son sein au squelette qui l’appelle, n’est pas possible.

Un exemple simple de noisette qui va être appelée : noisettes/bieres.html

Appelée par ce squelette :

Conjuguer le conditionnel...

Il devenait de plus en plus fréquent de devoir tester certains paramètres de balises afin de conditionner tel ou tel affichage. Avant SPIP 2.0, un des outil proposé était le filtre |?{si oui, si non}, souvent utilisé de la sorte :

Ou encore :

SPIP 2 dispose maintenant de nouveaux filtres pour gérer les conditions sur les balises, qui permettent une meilleure lisibilité et compréhension du code. Arrive ainsi |oui (équivalent de |?{' '}, |non équivalent de |?{'',' '}, |et, |ou, |xou.

oui

non

et : l’un et l’autre

ou : l’un ou l’autre

xou : indique l’un ou l’autre, mais pas aucun, ni les deux.

Par ailleurs, SPIP comprendra les équivalent anglais « yes », « not », « or », « and » et « xor »

Et traduire toujours mieux

Outre des outils spécifiques sur la zone de développements de plugins (salvatore) pour faciliter les traductions des développements, SPIP 2 permet maintenant de passer certains paramètres aux chaines de langues depuis les squelettes.

Pour utiliser une chaîne de langue, il suffit de connaitre son code, par exemple : <:bouton_telecharger:> ou si cela provient d’un plugin <:notations:note_ponderee:>.

Ce que permettaient les fonctions PHP de SPIP, c’est de donner des arguments, qui sont alors remplacés dans les chaines de langues, par exemple :

Cette ligne va chercher dans les fichers de langue l’entrée « plugin_necessite_lib » et va remplacer la chaine de caractères « @lib@ » par le contenu de la variable $librairie.

Pour réaliser la même chose dans un squelette SPIP 2, voici comment procéder. Rien de bien sorcier :

Favicon automatique

SPIP pouvant applatir maintenant des images en format .ico, il est possible (ce que propose les squelettes par défaut) de créer le fichier favicon (l’icone qui s’affiche à gauche de l’adresse du site dans votre navigateur) automatiquement à partir du logo de votre site. C’est ce que propose le code suivant :

Ce code agit ainsi :

  • si un fichier « favicon.ico » existe, il est utilisé
  • sinon on calcule un favicon à partir du logo du site s’il existe
  • sinon on prend celui de SPIP

Préparez-vous !

Oui, quelques sources prédisent une sortie vraiment proche... Alors, sait-on jamais... Préparez vos claviers et vos articles !