Ce plugin fournit une balise #MAINTENANT et une balise #NOW indiquant le
moment de génération de la page.
Cas d’usage
SPIP propose par défaut une balise #ENV{date}. Celle ci correspond à la date
où le cache de la page est calculé, sauf si une date est explicitement passée en URL.
Cela peut être problématique si l’on ne veut pas permettre de passer une telle date en URL.
Utilisation
Dans un squelette, utiliser au choix : #MAINTENANT ou #NOW. Les deux balises
sont synonymes.
Les différents filtres de date de SPIP peuvent être utilisés.
On peut également passer en argument de la balise une chaine indiquant le format de la date, selon les normes PHP.
Ex : #MAINTENANT{d/m/Y}
Problématique de cache
Attention : la balise renvoie la date de la mise en cache de la page, pas celle de l’affichage de la page. Il peut donc y avoir un léger décalage selon le moment de calcul du cache (en général, 1 h max, qui est la durée par défaut du cache des pages dans SPIP).
Si l’on tient absolument à avoir la date précise, deux solutions :
Pour un simple affichage de la date
Utiliser du code PHP dans le squelette
<?php
echo (date('Y-m-d H:i:s'));
// possibilité d'utiliser un fonction `affdate` de
SPIP autour du date
echo (affdate_court(date('Y-m-d H:i:s'));
Le code PHP est interprété juste avant que la page mise en cache côté SPIP ne soit envoyée au navigateur.
Pour une boucle
S’il s’agit de pouvoir avoir une boucle précise à la seconde près, il convient de mettre un cache à 0 pour le squelette contenant la boucle.
#CACHE{0}
Toutefois, cela est vivement déconseillé, car cela grève les performances. En
tout les cas, le squelette avec un cache à 0 devra être le plus petit
possible, inclus par exemple via la balise <INCLURE> (mais PAS via
#INCLURE).
Notes complémentaires
Ce plugin s’appuie sur une contribution historique de Christian Mercat et Dorian N.
Cette contribution avait été intégrée sous forme de lame au couteau suisse.
Le présent plugin permet de se passer du couteau suisse.
De plus, on peut indiquer plus facilement la dépendance à un plugin qu’à une
lame. Il suffit de mettre dans un paquet.xml la ligne suivante :
<necessite nom="balise_maintenant" />
Discussions by date of activity
One discussion
A mon humble avis, ce n’est pas une bonne idée d’utiliser la balise #NOW pour retourner autre chose que #MAINTENANT.
#DATE_COMPILATION me semblerait plus clair.
Je ne comprend pas ton message.
#NOWest un synonyme de#MAINTENANT. Cela ne retourne donc pas autre chose. C’est juste une forme plus courte.Quant à
#DATE_COMPILATIONcela serait ambivalent, car il y a 2 “compilations” dans SPIP. Le passage du code spip au code PHP, ce qui est ce qu’on entend généralement par compilation (premier niveau de cache) et le passage du code php au code HTML, ce qui pourrait éventuellement être appelé compilation, mais au risque d’une confusion. Et précisement#MAINTENANT/#NOWprend la date du moment du passage du code SPIP au code HTML.J’avais compris : Ce plugin fournit une balise #MAINTENANT, et une balise #NOW indiquant le moment de compilation du squelette.
Il faudrait alors mieux écrire : Ce plugin fournit une balise #MAINTENANT et une balise #NOW indiquant toutes les deux le moment de compilation du squelette.
Mais, franchement, MAINTENANT me paraît mal choisi s’il peut désigner une date passée ! Cela donnera inévitablement lieu à des qui-proquos.
Il n’y a vraiment pas moyen de retourner la date système exacte, sans qu’on doive penser à annuler le cache ?
Il s’agit d’une balise historique d’un couteau suisse. Dans la plupart des cas, cela sert, car le décalage est en standard de au plus 1 h. Et tu peux t’en sortir en mettant un
#CACHE{0dans un squelette spécifique.Mais bon tout dépend du contexte d’utilisation. Si c’est hors filtre / balise, tu peux aussi utiliser un bout de code PHP
Cela étant cela ne marchera pas dans une boucle SPIP (et pour cause : par définition la boucle est executé à un instant T, et mis en cache le temps de vie du cache de SPIP).
Et encore une fois ce n’est pas le moment de compilation du squelettes, qui est ENCORE un autre problème. C’est le moment de rendu du squelettes compilé. Mais je dois reconnaitre que le préambule de ma documentation était mal fichu, vu que je parlais moi aussi de date de compilation.
J’ai complété la doc avec une information par rapport aux problèmes de cache.
Reply to this message
Add a comment
Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :
Merci d’avance pour les personnes qui vous aideront !
Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.
Follow the comments:
|
