SPIP - Contrib

[ar] [en] [es] [fr] [it]



Accueil du site > Documentation > Archives documentation > Bidouilles pour avant SPIP 1.9

Afficher un auteur en ligne

samedi 15 janvier 2005, par GoUaRfIg !. Dernier ajout jeudi 28 avril 2005


Permet d’afficher par un filtre dans la partie publique du site si un auteur est en ligne


Introduction

Savoir à partir de la partie publique si un auteur (rédacteur ou administrateur) est connecté dans la partie privée reste anecdotique.

Et pourtant ceci peut être utile pour tout squelette de forum si on s’avise d’afficher aussi les visiteurs en ligne.

Mais attention, SPIP ne gère pas directement la connexion des visiteurs, pour celà il faudra auparavant appliquer un petit patch de ma composition.

Le filtre

Voici le filtre à ajouter dans mes_fonctions.php3 qui teste si un auteur (ou visiteur si vous avez appliqué le patch) est connecté :

Utilisation du filtre

Son utilisation est triviale. Appliquez ce filtre au tag #ID_AUTEUR (et seulement celui-ci) et mettez une valeur à afficher entre crochets.

[(#ID_AUTEUR|est_connecte)actuellement en ligne]

Si l’auteur n’est pas connecté :
le filtre ne revoit rien, donc rien ne s’affiche.

Si l’auteur est connecté :
le filtre renvoi un espace ’ ’, et l’affichage autour des parenthèses s’effectue.

Mise en garde avec le cache

Attention, si vous avez un cache de page égale à 1 heure, et qu’au moment de la génération de la page par SPIP, l’auteur est en ligne, il apparaîtra en ligne pendant 1 heure ! Le temps que la page expire...

La page où doit figurer ce filtre doit donc avoir un délai ($delai) de cache très court.
Je dirai 5 minutes :

 $delai = 300;

Comment dans ce cas ne pas regénérer mes pages toutes les 5 minutes ?

Avoir une page avec un cache de 5 minutes peut poser problèmes. Heureusement, SPIP a une fonctionnalité extrêmement utile, c’est l’inclusion de page squelette.

Il faut savoir que chaque squelette inclu (par un <INCLUDE>) dans une page a un délai de mise en cache différent du délai de la page qui l’appelle.

Autrement dit, vous pouvez avoir une page auteur.php3 avec un cache de 24 heures qui appelle une page en_ligne.php3 qui a elle même un cache de 5 minutes !

Démonstration

Soit un script auteur.php3 avec une mise en cache de 24 heures comme suivant :

La page auteur.html contient à un endroit le squelette suivant :

Maintenant construisons notre squelette inclu avec un cache de 5 minutes en_ligne.php3 :

Et la page en_ligne.html de contenir :

Dorénavant, la page « auteur » va appeler un script inclu « en_ligne » qui sera remis à jour toutes les 5 minutes. Donc vous aurez la possibilité de voir les auteurs en ligne sur une page qui restera en cache pendant 24 heures.

Elle est pas belle la vie ?


Répondre à cet article



Suivre la vie du site RSS 2.0 | Plan du site | Espace privé | Charte et vie SPIP-Contrib | SPIP | L'autre.net