Nouvelle balise : exemple avec #MAINTENANT

Une balise qui retourne la date d’aujourd’hui, et quelques infos sur comment écrire ses balises personnalisées.

Un petit exemple tout simple de balise définie par l’utilisateur, utile en soi mais aussi pour que l’administrateur néophyte puisse le modifier pour créer ses propres balises.

Pour (re-)définir une balise calculée par le compilateur, il suffit de déclarer une fonction dans mes_fonctions.php3. Le nom de la fonction pour la balise #X doit être balise_X. Si la balise #X existait, elle sera redéfinie.

Exemple : Balise #MAINTENANT

function balise_MAINTENANT($params) {
$params->code = "date('Y-m-d')";
$params->type = 'php';  
  return $params;
}

cette fonction est en 2 parties :

  • code reçoit le code php de la balise
    Bien-sûr, le code php peut-être arbitrairement compliqué. Ici, ça rend simplement la date sous la forme 2005-10-20 pour le jeudi 20 octobre 2005.
  • type peut recevoir 2 valeurs
    • php, pour signaler que le php qui est renvoyé par la fonction est considéré comme sûr.
    • html, pour signaler qu’on est pas sûr de php renvoyé, donc qu’il faut le passer dans la fonction interdire_script (dans le doute, utilisez cette valeur).

Pour des balises disons «évoluées» regardez du côté du spikini la page CrerSaBalise ; attention, niveau expert !

Utilisation : 2 exemples

1. L’objectif : j’ai rajouté des champs de date à mes tables, je voudrai les comparer à la date d’aujourd’hui. Par exemple, avec des colonnes “arrivee” et “depart”, la boucle suivante :

<BOUCLE_presents(AUTEURS){arrivee <= #MAINTENANT}{depart >= #MAINTENANT}>

me sélectionne les auteurs qui sont présents en ce moment : dont la date de départ est passée (inférieure ou égale à maintenant) et la date de départ non encore arrivée.

2. Un problème évoqué souvent est celui de la date du jour dans un fichier inclus. Normalement pour afficher la date du jour [(#DATE)] en dehors des boucles spip fonctionne très bien, ainsi que #ENV{date}, qui donne aussi la date du jour. Mais pas si cette instruction se trouve dans un fichier inclus. Avec cette balise ce problème est résolu.

updated on 10 August 2007

Discussion

Une discussion

Comment on this article

Who are you?
  • [Log in]

To show your avatar with your message, register it first on gravatar.com (free et painless) and don’t forget to indicate your Email addresse here.

Enter your comment here

This form accepts SPIP shortcuts {{bold}} {italic} -*list [text->url] <quote> <code> and HTML code <q> <del> <ins>. To create paragraphs, just leave empty lines.

Add a document

Follow the comments: RSS 2.0 | Atom