• Webmestre
  • , modifié le 

Principe d’architecture

La génération d’une lettre de notification d’événements est assez comparable à la génération d’une lettre d’actualités. Le principe est illustré ci-dessous.

Comparée à la génération d’une lettre d’actualités, les différences principales sont les suivantes :

  • le contenu de la lettre est limité à une liste d’événements décrits via le plugin Agenda
  • la génération est périodique et entièrement automatique. Elle se base sur la comparaison entre la date de début de l’événement et un intervalle de N jours à compter de la date du traitement
  • l’expéditeur de la lettre est nécessairement le webmestre du site. Ceci signifie que l’email du webmestre tel que déclaré dans SPIP doit être un expéditeur valide sur la plateforme Brevo (faute de quoi Brevo refusera de distribuer la lettre).
  • en l’absence d’intervention manuelle, le choix du modèle de lettre et le choix des listes de distributions dépendent de la configuration du plugin Sibactu.

Voyons maintenant comment retrouver dans le squelette (le modèle de lettre) les données enregistrées dans le fichier descriptif de la lettre. Pour plus d’information sur la structure générale des squelettes SPIP on se reportera à la documentation des boucles et balises.

Les données de description de la lettre

Pour accéder aux données de la lettre, on insèrera les lignes suivantes au début du squelette (typiquement dans la section <head>) :

[(#SET{textes,#LISTE{sujet}})]
  [(#SET{tableaux,#LISTE{evt}})]
  [(#SET{actu,[(#ENV{id}|actualites{#GET{textes},#GET{tableaux}})]})]

La séquence ci-dessus permet de renseigner la variable actu avec un tableau associatif. Ce tableau met en regard les noms des champs du formulaire de création et les valeurs associées. La correspondance est donnée ci-dessous. Dans le squelette de lettre, on peut accéder au contenu de ces variables par la syntaxe #GET{actu/nom-de-champ}.

ChampSignification
sujet Sujet du mail envoyé et titre de la lettre

D’autres champs ne contiennent pas directement de valeurs, mais plutôt des listes d’identifiants, et s’utilisent au sein des boucles SPIP :

ChampType d’objetSyntaxe de boucle
evt evenement <BOUCLE_e(EVENEMENTS)  {id_evenement IN #GET{actu/evt}}>

Les autres données

Comme tout squelette, une lettre d’information peut accéder aux balises générales du site. Toutefois, il est recommandé de ne pas utiliser les balises #FORMULAIRE_....

Vous pouvez également accéder aux variables de configuration des plugins.

Un exemple

Le source HTML ci dessous donne un exemple simplissime d’un squelette de lettre. Pour des raisons de lisibilité, l’exemple ne comporte aucun élément de style : vous devrez les ajouter selon votre charte graphique.

#CACHE{0}<!DOCTYPE html>
<html>
<head>
  [(#SET{textes,#LISTE{sujet}})]
  [(#SET{tableaux,#LISTE{evt}})]
  [(#SET{actu,[(#ENV{id}|actualites{#GET{textes},#GET{tableaux}})]})]
 <title>#GET{actu/sujet}</title>
 <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
</head>
<body>
  <h1>#GET{actu/sujet}</h1>

  <BOUCLE_e(EVENEMENTS)  {id_evenement IN #GET{actu/evt}}>
    <div>
      <h2>#TITRE</h2>
      <p>[(#DATE_DEBUT|affdate_debut_fin{#DATE_FIN,#HORAIRE,annee})
            [ (#TIMEZONE{#HORAIRE,abbr})]]</p>
       [<p> (#DESCRIPTIF|PtoBr)</p>]
       <p><i>Rendez-vous :<br/>
              [(#LIEU|PtoBr)<br/>][(#ADRESSE|PtoBr)<br/>]
              [(#PLACES|=={0}|?{Ouvert à tous, #PLACES personnes max})]
       </i></p>
    </div>
  </BOUCLE_e>
   
  <footer>
    <p>Une lettre d'actualités de <a href="#URL_SITE_SPIP">#NOM_SITE_SPIP</a>.
    Disponible <a href="[(#SELF|url_absolue)]">directement sur le site</a>.</p>
  </footer>
</body>
</html>

Cet exemple est distribué avec le plugin Sibactu et peut être retrouvé sous plugins/sibactu/squelettes/exemple_agenda.html. Pour l’utiliser, vous devez indiquer ’exemple_agenda’ comme nom de modèle dans la configuration du plugin Sibactu.

Pour une compréhension et un usage plus avancé des balises liées aux événements, on se reportera à la documentation du plugin Agenda.