Une balise `#GET_COOKIE` dans un squelette
Comment insérer la valeur d’un cookie provenant de l’internaute au niveau du squelette SPIP.
Exemple avec un fichier balise/get_cookie.php
<?php
use Spip\Compilateur\Noeud\Champ;
/**
* Compile la balise #GET_COOKIE
*
* #GET_COOKIE{nom_du_cookie, defaut}
*
* Balise dynamique : jamais figée dans le cache statique, car la valeur
* dépend du visiteur.
*
* @param Champ $p
* Pile au niveau de la balise
* @return Champ
* Pile complétée du code compilé
*/
function balise_GET_COOKIE($p) {
return calculer_balise_dynamique($p, 'GET_COOKIE', []);
}
/**
* Exécution de la balise dynamique `#GET_COOKIE`
*/
function balise_GET_COOKIE_dyn(string $nom, string $defaut = ''): string {
$valeur = $_COOKIE[$nom] ?? $defaut;
if (!is_string($valeur)) {
$valeur = $defaut;
}
return entites_html($valeur);
}
On peut en faire ce type d’usage dans un squelette, pour assigner immédiatement une préférence d’affichage de l’internaute (stockée dans un cookie), par exemple un mode de présentation pour une liste d’items :
<div class="liste-items" data-affichage="#GET_COOKIE{affichage,cards}">
...
</div>