Lettre d'information automatique

  1. Introduction
  2. Définir une lettre d'information automatique
    1. Exemple
      1. Déclaration de la lettre d'information automatique
      2. Déclaration des filtres associés
      3. Modèle de lettre d'information associé

Cette page est destinée aux intégrateurs ayant un minimum connaissances en HTML, CSS, XML, XSL, I18N.
Vous devez avoir lu la page Plugin Lettre d'information - Intégration graphique - v1.6.0

Introduction

Une lettre d'information automatique est une lettre d'information pré-paramétrée qui est envoyée aux abonnés selon une périodicité définie.

La lettre d'information est créée, remplie, validée et envoyée aux utilisateurs abonnés sans aucune intervention d'un contributeur.

Les lettres d'information automatiques sont paramétrées par l'intégrateur de l'application.

Définir une lettre d'information automatique

La définition d'une lettre d'information automatique est statique et définie par un point d'extension org.ametys.plugins.newsletter.auto.AutomaticNewsletterExtensionPoint dans un fichier plugin.xml.

Ce point d'extension permet de définir:

  • Le libellé de la lettre d'information
  • La description de la lettre d'information. Pour la compréhension du contributeur, il est fortement conseillé d'y préciser le contenu de la newsletter et sa périodicité
  • Le titre de la lettre d'information. Ce titre est notamment utilisé dans le sujet du mail de la newsletter envoyée. Le joker number peut être utilisé pour le numéro de la lettre d'information.
    Exemple: "Titre de ma lettre d'information {number}"
  • La périodicité de l'envoi. La périodicité peut-être soit hebdomadaire ("week") soit mensuelle ("month"). Dans les 2 cas il faut préciser le ou les jours de l'envoi séparés par des virgules. Pour le cas hebdomadaire le numéro du jour correspond au jour de la semaine (ex: 1=lundi, 4=jeudi). Pour le cas d'un envoi mensuel le numéro jour correspond au jour dans le mois.
  • Les filtres des contenus qui seront remontés et affichés dans la lettre d'information. Il s'agit ici des identifiants de filtres statiques (org.ametys.cms.filter.ContentFilterExtensionPoint) définis ailleurs dans l'application. Un nom est donné aux filtres pour savoir où afficher les contenus correspondants dans le template de la lettre d'information.

Exemple

Cas d'une lettre d'information qui sera envoyée chaque semaine le lundi et le samedi, contenant les 5 derniers événements publiés sur le site.

Les événements seront affichés dans la zone "contents" du modèle.
Un article à mettre en avant sera affiché dans la zone "zoom" du modèle.

Déclaration de la lettre d'information automatique
<extension
    point="org.ametys.plugins.newsletter.auto.AutomaticNewsletterExtensionPoint"
    class="org.ametys.plugins.newsletter.auto.StaticAutomaticNewsletter"
	id="automatic.newsletter.events">
    	<label i18n="false">Lettre d'information des derniers événements</label>
        <description i18n="false">Lettre d'information des 5 derniers événements envoyée chaque semaine</description>
        <newsletter-title i18n="false">Journal des événements n°{number}</newsletter-title>
        <frequency type="week">1,6</frequency>
        <filters>
             <filter name="contents" id="newsletter.events.filter" />
             <filter name="zoom" id="newsletter.zoom.filter" />
        </filters>
</extension>
Déclaration des filtres associés

Filtre permettant de remonter les 5 derniers événements publiés (un événement est un contenu de type actualité tagué comme étant un événement).

<extension point="org.ametys.cms.filter.ContentFilterExtensionPoint"
           class="org.ametys.web.filter.StaticWebContentFilter" 
		   id="newsletter.events.filter">
           <title i18n="false">Filtre des derniers événements</title>
           <description i18n="false">Filtre des derniers événements pour la lettre d'info automatique</description>
           <content-types>
           		<type id="org.ametys.plugins.news.Content.news" />
           </content-types>
           <tags>
           		<tag key="NEWS_EVENT" />
           </tags>
           <view>abstract</view>
           <context type="current-site" lang="current" />
           <max-result>5</max-result>
           <sort-information>
           		<sort metadataId="lastValidationDate" ascending="false"/>
           </sort-information>
</extension>

Filtre permettant de remonter un contenu de type article qui sera mis en avant dans la lettre d'information (dernier article publié tagué "zoom")

<extension point="org.ametys.cms.filter.ContentFilterExtensionPoint"
           class="org.ametys.web.filter.StaticWebContentFilter" 
		   id="newsletter.zoom.filter">
           	<title i18n="false">Zoom sur un article</title>
           	<description i18n="false">Filtre pour le zoom pour la newsletter automatique</description>
          	<content-types>
            	<type id="org.ametys.web.default.Content.article" />
           	</content-types>
            <tags>
            	<tag key="CONTENT_ZOOM" />
            </tags>
            <view>abstract</view>
            <context type="current-site" lang="current" />
            <max-result>1</max-result>
            <sort-information>
                 <sort metadataId="lastValidationDate" ascending="false" />
            </sort-information>
</extension>
Modèle de lettre d'information associé

Fichier skins/[skinName]/newsletter/[templateName]/models/model.xml

<model lang="fr">  
    <table id="newsletter-sheet" cellpadding="0" cellspacing="0">
        <tr>
            <td id="newsletter-post">
                <div class="edito-sheet">
                    <h1>Edito</h1>
                    <p>
                        Lorem ipsum dolor sit amet, consectetur adipiscing elit. 
                        Aenean pharetra ultrices eleifend. Suspendisse non odio justo, at elementum lorem. 
                        Etiam eu tellus et leo varius mollis. In diam sem, placerat in molestie id, laoreet id ante. 
                        Sed pretium tempus purus ut euismod. Aliquam in libero nulla, ut viverra tellus.
                    </p>
                </div>
                <div class="articles" auto-newsletter-ignore-if-empty="contents">
                    <p auto-newsletter-insert-filter="contents" auto-newsletter-insert-level="3">Insérez vos contenus ici</p>
                </div>
            </td>
            <td id="newsletter-sidebar1">
                <div class="encart" auto-newsletter-ignore-if-empty="zoom">
                    <h2>Zoom</h2>
                    <p auto-newsletter-insert-filter="zoom" auto-newsletter-insert-level="3">Aliquam sed ante libero. Phasellus aliquet tincidunt mauris. Praesent luctus lobortis elit, eget eleifend lacus dapibus pellentesque.</p>
                </div>
            </td>
        </tr>
    </table>
</model>

Plusieurs attributs spécifiques servent à définir le comportement de la lettre d'information automatique :

  • auto-newsletter-ignore-if-empty="contents" : ce bloc ne sera pas affichés dans la lettre d'information si aucun contenu n'est remonté par le filtre "contents".

  • auto-newsletter-insert-filter="contents" : définit l'élément HTML qui contiendra l'ensemble des contenus remontés par le filtre "contents". Le contenu de l'élément dans le modèle (balises et contenu textuel) est remplacé par le contenu du filtre.

  • auto-newsletter-insert-level="3" : niveau de titre des contenus contenus remontés dans cette zone

Par exemple, si le filtre "contents" remonte deux contenus et si le filtre "zoom" n'en remonte aucun, la lettre d'information automatique aura le contenu suivant :

<table id="newsletter-sheet" cellpadding="0" cellspacing="0">
    <tr>
        <td id="newsletter-post">
            <div class="edito-sheet">
                <h1>Edito</h1>
                <p>
                    Lorem ipsum dolor sit amet, consectetur adipiscing elit. 
                    Aenean pharetra ultrices eleifend. Suspendisse non odio justo, at elementum lorem. 
                    Etiam eu tellus et leo varius mollis. In diam sem, placerat in molestie id, laoreet id ante. 
                    Sed pretium tempus purus ut euismod. Aliquam in libero nulla, ut viverra tellus.
                </p>
            </div>
            <div class="articles">
                <p>
                    <div class="article">Contenu 1...</div>
                    <div class="article">Contenu 2...</div>
                </p>
            </div>
        </td>
        <td id="newsletter-sidebar1"></td>
    </tr>
</table>

Le gabarit d'une lettre d'information et son modèle peuvent être utilisés aussi bien pour une lettre d'information manuelle que pour une lettre d'information automatique. Dans le cas d'une lettre d'information manuelle, les attributs spécifiques seront ignorés.