Installation
- Récuperez le code à partir du grenier de la zone
- décompressez là dans le répertoire
plugins/
de votre site, - dans la page de gestion des plugin de votre site, activez le plugin Balise Session
Vous pourrez accéder à cette même documentation sur votre propre site (spip.php?page=session
) avec des exemples interactifs.
Principe
Pour reconnaître le visiteur authentifié, on s’appuie sur le mécanisme de session de SPIP. Toutefois, comme cette valeur est affichée dans un squelette, on doit aussi tenir compte du cache et empêcher que les données d’un visiteur soient utilisée par les suivants, le temps de la durée de vie de la page.
Deux moyens peuvent être employés :
- Définir à 0 la durée de vie du cache de chaque page où on affichera ou testera le contenu de la balise #SESSION. C’est une mauvaise idée en matière de performance globale pour le site
- Créer une page de cache de chaque page pour chaque visiteur authentifié. Ainsi, les visiteur accèdent à des pages distinctes calculées moins souvent. C’est le principe retenu dans cette page.
On introduit donc, en plus de la balise, un script session.php, appelable par la balise standard <INCLURE()>
. Ce script est un clone du script standard de spip (spip.php
) à ceci-près qu’il défini un marqueur de squelette basé sur l’identifiant du visiteur, s’il est défini.
Appel spécifique des noisettes
On fera appel à la balise #SESSION dans des squelettes inclus (qu’on appelle aussi noisettes...)
<INCLURE(session.php){fond=page_speciale}>
où page_speciale.html
contiendra l’un au l’autre des exemples du plugin, ou de leurs combinaisons, ou d’autres éléments issus de cette page de démonstration, ou bien encore, de votre propre cru ! :D
Gestion de valeurs supplémentaires
Il est possible de gérer des valeurs supplémentaires à celles contenues dans le tableau $auteur_session
. Pour cela, il faut ajouter le paramètre {session}
à l’appel de squelettes inclus. Dès lors, la balise #SESSION s’appuiera aussi sur le tableau associatif $_SESSION
php standard (cf. Le support des sessions de PHP).
Exemple : <INCLURE(session.php){session}{fond=boite_session}>
Ce plugin introduit pour ces valeurs, une action permettant de créer/affecter une valeur en lui précisant un nom, ou de vider cette valeur. Pour faire appel à cette action, on utlisera soit un formulaire ad hoc, soit, dans ce type précis de noisettes, la balise #URL_ACTION_AUTEUR de la manière suivante :
<a href="[(#URL_ACTION_AUTEUR{session,[(#ENV{session})]-affecter-nom-valeur,url})]">
texte du lien
</a>
ou
- nom sera le code employé pour restituer la valeur via la notation
#SESSION{nom}
, - valeur pourra être une balise spip ou une constante,
- url, l’adresse de destination du lien, #SELF ou tout autre adresse imaginable.
ou bien
<a href="[(#URL_ACTION_AUTEUR{session,[(#ENV{session})]-vider-nom,url})]">
texte du lien
</a>