©
. Document créé le 5 septembre 2011 , mis à jour le 9 septembre 2011.Un seul arbre qui tombe fait plus de bruit qu'une forêt qui pousse. Proverbe africain
Accueil du site > Astuces > SPIP > Un filtre SPIP pour optimiser avant publication
Juste un petit billet sur un filtre SPIP qui mérite le détour : #FILTRE.
La particularité de ce filtre est de traiter le contenu de la page, du squelette, après construction, en fin d’assemblage, de composition, de compilation, avant d’être mise en cache. Ce filtre permet donc les dernières corrections de la page HTML avant publication.
Pour en savoir plus sur ce filtre #FILTRE, voir cette page sur spip.net qui lui est consacrée.
Exemple : placez en fin de votre squelette sommaire.html la ligne :
#FILTRE{compacter_html}
Et ajoutez dans votre fichier mes_fonctions.php :
function compacter_html ($s)
{
// les espaces en double
$s = preg_replace('/[ \t]+/m', ' ', $s);
// les commentaires HTML
$s = preg_replace('/(<!--.*-->)/', '', $s);
// l'espace en debut de ligne
$s = preg_replace('/^\s/m', '', $s);
// les lignes vides
$s = preg_replace('/\n+/m', "\n", $s);
// les espaces enrobants
$s = trim($s);
// renvoyer le code nettoyé
return ($s);
}
Votre sommaire.html sera ainsi compacté avant mise en cache.
Dans le cas ici, vous gagnerez, en général, 10% sur le code généré. Ce filtre compacter_html ne fait que supprimer les espaces superflus. Mais rien de vous empèche d’optimiser ce filtre, de supprimer les déclarations de classes CSS non utilisées, voire de corriger un défaut dans votre code HTML.
Le filtre #FILTRE ne s’applique qu’au squelette en cours, pas aux squelettes inclus par la balise <INCLURE>.
Pour appliquer ce filtre compacter_html à ces squelettes inclus, vous pouvez appliquer le filtre en fin de ce squelette, ou appliquer le filtre à la version statique de la balise.
Dans le premier cas, mettez en fin des squelettes inclus la ligne
#FILTRE{compacter_html}
La modification sera globale, pour toutes vos pages incluant ce squelette.
Dans le second cas, remplacer la balise <INCLURE> par la version #INCLURE.
Par exemple, dans article.html, remplacer
<INCLURE{fond=inc-forum}{id_article} />
par
[(#INCLURE{fond=inc-forum}{id_article}|compacter_html)]
Les forums sont fermés.