Carnet Wiki

Trucs, astuces et subtilités SPIP

voir plutot Astuces courtes pour SPIP et Astuces longues pour SPIP pour une liste plus récente de trucs et astuces

Obsolète

cette page qui concerne les versions de SPIP antérieures à 1.9.2 est obsolète.
plusieurs trucs présentés ici n’en sont plus !


Trucs, Astuces et Subtilités SPIP

-  ATTENTION, avec la 1.7.2 (je ne sais si c’est également le cas avec la 1.8) : une boucle <BOUCLE_1></BOUCLE_1>calculs<B_1> ne marche pas quand il n’y a rien entre <BOUCLE_1> et </BOUCLE_1>, alors qu’avec un espace, ou une formule PHP neutre (du genre $e=0) ça marche...

Serait-ce le compilateur 1.7.2 qui conclurait (hâtivement) qu’il n’y a rien à faire ???

Par exemple pour la boucle suivante, où le code à exécuter est en PHP :

<BOUCLE_1(ARTICLES){id_mot}{id_rubrique}> </BOUCLE_1>
 <?php if(#ID_GROUPE <> $groupe)  $max = max(#TOTAL_BOUCLE,$max)  ?>
 </B_1>

-  1. Possibilité de choisir un article dans une liste
Dans une boucle, il est possible de tester si l’id d’un article, ou d’un mot clé, est égal à une valeur, avec le critère : ... BOUCLE_1 {id_article=4}... ou différent d’une valeur ... BOUCLE_1 {id_article<>4} ...
Il est aussi possible d’étendre ce test à une liste d’articles, ou de mots-clés :
BOUCLE_1 {id_article==^(4|5|6)$} ou différent d’une liste de valeurs :
BOUCLE_1 {id_article!==^(4|5|6)$} .

Attention cependant à ne pas utiliser de « 0 » en 1er chiffre : ne pas mettre « 04 », mais « 4 », car PHP interprète 04 en 84 (un nombre commençant par un zéro est compris en octal (base 8)... et le résultat peut être tout à fait fantaisiste, en particulier si aucun article n’a pour id 884...

-  2. Pour créer un tableau, précautions à prendre La création d’un tableau sous SPIP devient vite un « casse-tête chinois », si nous ne prenons pas certaines précautions... Découvrez-en les astuces et évitez les pièges !

Première étape :
veillez à bien laisser une ligne vide (en cliquant simplement sur « entrée ») de part et d’autre de votre tableau. (si deux tableaux se suivent, vous aurez alors, deux lignes vides entre les tableaux).

Deuxième étape :
positionnez votre curseur en début de ligne, c’est-à-dire, collé à la marge.

Troisième étape :
créez votre tableau en utilisant les « pipes » [*] pour séparer les cellules des colonnes et des lignes.

• Squelette d’un tableau :

colonne 1 colonne 2 colonne 3
colonne 1, ligne 1 colonne 2, ligne 1 colonne 3, ligne 1
colonne 1, ligne 2 colonne 2, ligne 2 colonne 3, ligne 2
colonne 1, ligne 3 colonne 2, ligne 3 colonne 3, ligne 3

• Représentation de SPIP :

colonne 1 colonne 2 colonne 3
colonne 1, ligne 1 colonne 2, ligne 1 colonne 3, ligne 1
colonne 1, ligne 2 colonne 2, ligne 2 colonne 3, ligne 2
colonne 1, ligne 3 colonne 2, ligne 3 colonne 3, ligne 3

ATTENTION : ne JAMAIS laisser d’espace après le dernier « pipe » d’une ligne.
Si vous faites cette erreur, votre tableau sera un texte entrecoupé de « pipes ».

Et bien laisser DEUX lignes vides après le tableau, pour que cela fonctionne.

[*] sur macintosh : Pomme-Option-L / sur windows : AltGr 6

Ce qui précède est valable pour les tableaux simples, de petite taille. Et la notation de SPIP s’avère très difficile quand il y a des cases vides. Pour des tableaux plus complexes, coller dans l’article le code html dont le résultat est maîtrisé.

-  3. Dans un squelette, ne pas utiliser plus de deux tirets de suite pour les commentaires : si cela ne pose pas de problème pour HTML, cela en pose pour SPIP, qui interprète cela différemment, et risque de transformer le paragraphe suivant (avant la prochaine ligne de commentaire) en commentaires...
Le code disparaît donc, il n’est pas exécuté, ce qui donne des effets surprenants.
Faites vous même l’essai avec les lignes suivantes, dans un squelette.html :

code HTML A
<— ligne 1 de commentaire, OK pour SPIP —>
code HTML B
<---- ligne 2 de commentaire, non OK pour SPIP ---->
code HTML C
<---- ligne 3 de commentaire, non OK pour SPIP ---->
code HTML D

_Le code HTML C ne sera pas exécuté, car transformé par SPIP en commentaires... et vous le verrez en regardant le source des pages web créées.

-  4. Les rubriques ne peuvent être associées (1.7.2) à des mots clés sans groupe (volontaire ? bug ? obligation ?) Ce n’est pas dramatique, mais il faut le savoir.

-  un bug d’affichage (avec le squelette MOT.html standard) n’apparait que s’il n’y a pas plus de 1 article avec un mot clé, et/ou plus de 1 rubrique associée à un mot clé. (j’ai découvert que cela disparaissait tout à coup, dès que j’ajoutais un article). Cela ne devrait pas être trop compliqué à changer.

-  5. Pour pouvoir faire référence à une URL contenant des crochets (par exemple [uid]) une solution consiste à remplacer le crochet fermant « ] » par « [ » et le crochet ouvrant par « ] » (enlever les guilllemets)
(passer en mode Edition pour voir les deux chaînes de carcatères à utiliser)
[lien->adresseContenant[uid&#93;Voila.html]  

FranckSG

Avec la 1.8

Possibilité d’avoir ses squelettes, dans le dossier « /squelettes » à mettre à la racine du site (sous /spip si le Spip n’est pas à la racine), il n’y a plus rien à déclarer, la 1.8 est livrée ainsi.

Mais il faut savoir que un squelette spécifique article=1.html ou article-1.html, mis dans ce répertoire /squelettes, ne sera actif que si le squelette article.html (recopié depuis article-dist.html si vous utilisez le standard) est également présent.
De même pour les squelettes breve spécifique qui ont besoin que le squelette rubrique.html soit présent dans /squelettes.

On peut toutefois lever cette restriction en modifiant chercher_squelette (voir le forum). Cette modif permet en plus ranger ses squelettes dans plusieurs répertoires, en fonction du rédacteur par exemple.

Cette modification est également utilisée dans la proposition de contrib « inclusion récursive » (accessible sur spip-contrib pour ceux qui ont ouvert un compte) qui inclus également un mécanisme pour ne pas avoir à recopier les squelettes lorsque l’on veut simplement rajouter quelques lignes avant ou après.

- Mise à jour :21 décembre 2021 à 14h30min