astuces spip! Retrouvez dans cette rubrique des astuces pour SPIP comme certains raccourcis typographiques peu connus ou des explications sur les squelettes SPIP.

Les raccourcis spip permettent de rédiger du contenu en insérant des balises spécifiques dans les champs textes lors de la rédaction d’un article, ces balises sont ensuite transformées par spip en code html pour l’affichage public.

Liste avec la puce spip

Rédaction

Résultat


- banane
- citron

Code généré

Liste sans la puce spip

Rédaction

Résultat

  • banane
  • citron

Code généré

Liste numérotée

Rédaction

Résultat

  1. banane
  2. citron

Code généré

Sous-liste

Rédaction

Résultat

  1. légumes
    • carotte
  2. agrumes
    • citron
    • orange

Code généré

Et pour personnaliser les puces des listes, référez vous en css à list-style-type .

Raccourcis wikipedia

Rédaction

Résultat

Code généré

Ecrire du code (php, html) non interprété

Utiliser les balises <cadre> ou <code>

Rédaction

Résultat

ligne de texte
<?php
echo hello world;
?>

autre ligne de texte

Code généré

Ecrire du code html ou css à interpréter

Utiliser la balise<html>

Rédaction

Résultat

vert

Code généré

<style>
<!--
.cssvert{color:green}
-->
</style>

Simple retour à la ligne

Rédaction

Résultat

votre texte
la ligne suivante
la ligne suivante

Code généré

Pour insérer une ligne de paragraphe, sautez une ligne.


Les références SPIP pour les raccourcis typographiques se trouvent dans l’aide en ligne, une démonstration est disponible sur demo.spip.org

Structure de base d’une boucle spip

Mémento d’une structure de boucle spip : Cet exemple est à réaliser dans les squelettes html de vos pages SPIP.
  1.  
  2. <Bn>
  3. option avant si réponse
  4. <BOUCLEn>
  5. la boucle
  6. </BOUCLEn>
  7. option après si réponse
  8. </Bn>
  9. option si aucune réponse
  10. <//Bn>
  11.  

un peu de css pour clarifier l’exemple d’application :

  1.  
  2. <style>
  3. <!--
  4. .maboucle div{border: 2px solid orange ;padding:10px;}
  5. .maboucle ul{border:2px solid pink;width:40%;}
  6. .maboucle li{padding:10px;}
  7. .maboucle span{color:red;}
  8. .maboucle p{ color : purple ;}
  9. -->
  10. </style>
  11.  

Exemple d’application de boucle spip

  1.  
  2. <div class="maboucle">
  3. <p>du texte peut se placer avant la boucle</p>
  4. <Bn>
  5. <div>
  6. Voici tous les articles dont les sous titres sont coucou
  7. <ul>
  8. <BOUCLEn(ARTICLES){soustitre="coucou"}{par titre}>
  9. <li>#TITRE -#SOUSTITRE</li>
  10. </BOUCLEn>
  11. </ul>
  12. </div>
  13. </Bn>
  14. <span>Désolé! aucun article ne correspond à ces critères!</span>
  15. <//Bn>
  16. <p>du texte peut se placer après la boucle</p>
  17. </div>
  18.  

Résultat si les critères correspondent

du texte peut se placer avant la boucle

Voici tous les articles dont les sous titres sont coucou
  • article abc -coucou
  • article efg -coucou
  • article tuv -coucou

du texte peut se placer après la boucle

Résultat si les critères ne correspondent pas

du texte peut se placer avant la boucle

Désolé ! aucun article ne correspond à ces critères !

du texte peut se placer après la boucle

Mémento pour les critères de boucles ou les balises

Dans vos squelettes, pour séparer les éléments par une une virgule utiliser {","}

  1.  
  2. <BOUCLE_auteurs(AUTEURS) {id_article} {par nom} {", "}>
  3. [<a href="#URL_AUTEUR">(#NOM)</a>]
  4. </BOUCLE_auteurs>
  5.  

Pour créer le lien de l’article 12 sans passer par une boucle #URL_ARTICLE{12}

Forcer la réindexation d’un site sous SPIP

Il est possible de forcer la mise à jour de la base des indexs. Cette fonctionnalité est accessible en spip<1.9.2 en lançant une page du répertoire "ecrire" : http://nom_de_votresite/ecrire/admin_index.php

Cliquez ensuite sur "Cliquez ici pour forcer l’indexation du site" jusqu’à ce que tous les indicateurs soient complètement verts.

En SPIP > 1.9.2 utilisez le plugin Recherche Etendue.

Les infos php du serveur

Pour connaitre les possibilités php du serveur qui héberge votre site comme par exemple quelles sont les librairies de traitement d’images installées, allez sur la page :

  • SPIP<1.9 http://nom_de_votresite/ecrire/info.php
  • SPIP>1.9 http://nom_de_votresite/ecrire/?exec=info

Les filtres natifs de SPIP

Les filtres sont des fonctions qui s’appliquent aux balises avec crochets et accolades [(#TEXTE)], [(#URL_ARTICLE)] ... il faut mettre un pipe | (alt + L sur mac) puis le filtre. [(#TEXTE|filtre)] Il existe dans SPIP des filtres par défaut, mais on peut aussi se servir des fonctions php ou créer ses propres fonctions.

Filtre conditionnel

Pour faire apparaitre le lien hypertexte d’un article même si le titre du lien n’existe pas.

Cocher d’abbord Oui dans (ecrire/?exec=configuration) > Contenu des articles > Lien hypertexte

  1.  
  2. [sur le web : <a href="#URL_SITE">(#NOM_SITE|!={''}|?{#NOM_SITE,#URL_SITE})</a> ]
  3.  

Plus court ?

  1.  
  2. [sur le web : <a href="#URL_SITE">(#NOM_SITE|sinon{#URL_SITE})</a> ]
  3.  

Filtre conditionnel d’une inclusion

A mettre à l’interieur d’une boucle article !
  1.  
  2. [(#ENV{id_article}|=={'59'}|?{' ',''})<INCLURE{fond=inc-art59}{id_article}>]
  3.  

Filtre transformant des paragraphes en simple saut à la ligne

Exemples de filtres personnels

Cryptez vos emails en les laissant visibles !

Le filtre antispamarobase s’ajoute au filtre crypt_mail , il permet aux rédacteurs de rédiger un texte qui contient un email protégé des robots spammeurs.

Préférez toutefois un lien vers la page de l’auteur, en rédaction[écrire un mail à l'auteur->auteur54] ou en dur dans un squelette

<BOUCLE_auteurs(AUTEURS) {id_article} {par nom} {", "}>
<a href="#URL_AUTEUR">Ecrire un mail à l'auteur #NOM</a>
</BOUCLE_auteurs>

L’exemple de contact@elastick.net ici crypté reste visible et actif, ouvrez le code source pour vérifier !

Démonstration du cryptage de mail

Rédaction

Code généré

<a href="m&#97;ilto&#58;&#99;ont&#97;&#99;t&#64;el&#97;sti&#99;k&#46;net" class="spip_url spip_out">contact&#64;el&#97;sti&#99;k.net</a>

  1.  
  2. /*
  3. * +----------------------------------+
  4. *  Nom du Filtre : antispamarobase         
  5. * +----------------------------------+
  6. *  Date : 4 avril 2005
  7. *  Auteur : ELASTICK.net
  8. * +-------------------------------------+
  9. *  Fonctions de ce filtre :
  10. *  Crypter l arobase jusqu au point suivant dans le champ d un article, d une rubrique etc..
  11. *  sans empecher l affichage a l ecran
  12. *  ni son utilisation par un logiciel de messagerie
  13. * +-------------------------------------+
  14. * utilisation dans un squelette :
  15. * [(#TEXTE|antispamarobase)]
  16. * s&#8217;utilise avec crypt_mail (placé au dessus) dans mes_fonctions.php
  17. * a combiner eventuellement avec cryptemail_txt
  18. * [(#TEXTE|cryptemail_txt|antispamarobase)] qui crypte la balise <a href>
  19. *
  20. */
  21.  
  22. function antispamarobase($texte) {
  23.    while (strpos($texte,"ATICI") > 0)  { //!! ATTENTION remplaçer ATICI par un arobase
  24.    $debuarobase = strpos($texte,"ATICI");
  25.    $finarobase = strpos($texte,'.',$debuarobase);
  26.    $cryptarobase = substr($texte,$debuarobase,$finarobase-$debuarobase);
  27.    
  28.    $s= crypt_mail($cryptarobase);
  29.    
  30.    $texte = ereg_replace($cryptarobase, $s, $texte);
  31.       }
  32.       return $texte;
  33.  } 
  34.  

il faut le faire précéder dans mes_fonctions.php de :

  1.  
  2. /*
  3. * +----------------------------------+
  4. *  Nom du Filtre : crypt_mail           
  5. * +----------------------------------+
  6.  
  7. *  Date : dimanche 6 juillet 2003
  8. *  Auteur : Jean-Pierre KUNTZ
  9. *    alias Coyote
  10. * +-------------------------------------+
  11. *  Fonctions de ce filtre :
  12. *  Crypter une chaîne de texte (email, URL)
  13. *  sans en empecher l affichage à l ecran
  14. *  ni l&#8217;utilisation par un logiciel de messagerie
  15. * +-------------------------------------+
  16. *
  17. * Pour toute suggestion, remarque, proposition d&#8217;ajout
  18. * reportez-vous au forum de l&#8217;article :
  19. * http://spip-contrib.net/article.php3 ?id_article=197
  20. */
  21.  
  22. function crypt_mail($texte) {
  23.    $s="";
  24.    for ($i=0;$i<strlen($texte);$i++) {
  25.      $s.="&#".ord($texte{$i}).";";
  26.    }
  27.    return $s;
  28. }
  29.  
  30. function cryptemail_txt($texte) {
  31.        while (strpos($texte,"mailto:&quot;</span><span style="color: #66cc66;">) > 0)  {
  32.         $debemail = strpos($texte,"mailto:&quot;</span><span style="color: #66cc66;">);
  33.         $finemail = strpos($texte,'"',$debemail);
  34.         $textemail = substr($texte,$debemail,$finemail-$debemail);
  35.  
  36.         $s= crypt_mail($textemail);
  37.  
  38.         $texte = ereg_replace($textemail, $s, $texte);
  39.       }
  40.       return $texte;
  41.           }
  42.  

Un code pour retirer toutes les balises <style=’...’>

SPIP ajoute des balises de style dans le texte, est-ce vraiment utiles ? Le débat fait rage, ici, pour la démonstration, on propose d’éliminer ces balises.

Un exemple ?

Rédaction

Résultat


Code généré

Après application du filtre, nous aurons :

<style=’...’> est donc gênant pour gérer le border des images ou leurs marges, il suffira alors d’appliquer le filtre et d’ajouter ces propriétés de class css après l’appel des fichiers css :

  1.  
  2. <style type="text/css">
  3. .spip_documents img {border:1px solid green;}/*pas de bords? mettez {border:none;}*/
  4. .spip_documents_left img {margin-right:0.5em; float:left;}
  5. .spip_documents_right img {margin-left:0.5em; float:right;}
  6. </style>
  7.  

Voici donc un filtre pour retirer toutes les balise <style=’...’> le code d’un filtre SPIP est à mettre dans le fichier mes_fonctions.php et si ce fichier n’existe pas vous devez le créer dans un dossier nommé squelettes à la racine de votre site.

  1.  
  2. <?php
  3. function virebalisestyle($str) {
  4.    if($str!="") {
  5. $str= preg_replace( "/style ='([^>]*)'/i" , "" , $str);
  6. }
  7.  return $str;
  8. }
  9. ?>
  10.  

Cette fonction/filtre s’utilisera ainsi : [(#TEXTE|virebalisestyle)]

En vrac

PLUGINS

  1.  
  2. dites moi, vous avez une idée pour trouver si un plugin est là?
  3.         <marcimat>      1.9.2 ou 1.9.3, php ou squelette ?
  4.         <touti> dans un squelette 1.9.2c
  5.         <marcimat>      [(#EVAL{DIR_PLUGIN_PREFIX}|?{' ',&#8221;}) Mon action ]
  6.         <marcimat>      ou _DIR...
  7.         <touti> arf, et en php ?...
  8.         <marcimat>      if (defined('_DIR_PLUGIN_XXX')){ ... }
  9.         <touti> génial merci
  10.         <marcimat>      pour 1.9.2
  11.         <marcimat>      en 1.9.3, c'est un poil simplifié tout ça
  12.         <touti> ah?
  13.         <marcimat>      [(#PLUGIN{XXX}) Mon action ]
  14.  

BALISES

Quand on crée une balise, on peut vouloir récupérer des variables du contexte. Il y a un article déjà sur contrib qui explique cela.

Mais quand on veut trouver le type de boucle du contexte, faut aller chercher dans la pile $p.

Voilà comment :
$p->boucles[$p->id_boucle]->id_table

SQUELETTES

Empêcher l’apparition des boutons de recalcul sur une page en particulier, à plaçer en première ligne :

Se servir de #REM par exemple pour image_typo cela donnerait une image avec la police victor de Actuellement

  1. [(#REM|=={''}|?{Actuellement}|image_typo{police=Victor.ttf,taille=14,largeur=150})]

Créer un lien vers l’article 54 en se passant de boucle

  1. <a href="#URL_ARTICLE{54}">lien</a>

Créer un lien vers la page "site" avec la variable id_syndic=xx , à mettre dans une boucle de syndication

  1. [(#URL_PAGE{site}|parametre_url{id_syndic})]

Afficher les articles ayant le mot clef truc

  1. <BOUCLE_articles(ARTICLES){titre_mot=truc}>#TITRE</BOUCLE_articles>

Utiliser un array, le déclarer précédemment, puis le remplir dans une boucle incrémenté par le compteur.

  1.  
  2. #SET{articles,#ARRAY}
  3. <BOUCLE_articles_rub(ARTICLES){id_rubrique}>
  4. #SET{articles,#GET{articles}|array_merge{#ARRAY{#COMPTEUR_BOUCLE,#ID_ARTICLE}}}
  5. </BOUCLE_articles_rub>
  6. [(#REM) test du tableau faire [(#GET{articles}|print_r)] ]

Faire un CSS qui soit un squelette

cela permet de récupérer des variables.

Appeler la CSS dans une page SPIP

Inclure une variable calculée par une noisette.

classiquement et sans variable on utilise <INCLURE> ou les [(#INCLURE)]

pour envoyer et récupérer la variable

  1.  
  2. #SET{mavariable,#INCLURE{fond=monsquelette}{monparam=#ENV{monparam}}}
  3.  

MYSQL

Aller directement dans la base pour modifier ou supprimer, par exemple lorsque vous avez 2000 sites qui encombrent, un gros coup de balai peut être nécessaire ! La méthode rapide est donc de lançer une commande directement depuis MYSQL (par exemple via l’interface phpmyadmin)

sélectionner les sites en proposition

Supprimer les sites en proposition

Prenez un bon navigateur!