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.

Discussion

Une discussion

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

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.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom