Module Newsletter
De Wiki.
Le mot-clef NEWSLETTER dans les fonctionnalités d'un mini-site active les liens de gestion des Newsletters et des objets associés.
Sommaire |
Protocole de création d'une newsletter
- créer un expéditeur
- créer une catégorie
- créer un fichier de modèle, ou template (fichier html stocké dans /frontoffice/newsletter/template/)
- créer une newsletter, et désigner les objets créés précédemment.
- importer des inscrits
Création des modèles
Le dossier de stockage /frontoffice/newsletter/template/ est créé automatiquement par le module.
Des sous-dossiers css et img peuvent être créés pour stocker des contenus rich-html.
Cet emplacement par défaut est réglé par le define DEF_ROOT_TEMPLATENEWS.
Importer des inscrits
L'import d'inscrits se fait par traitement d'un fichier CSV à l'adresse /cms/news_inscrit/import_news_inscrit.php.
Structure du fichier :
"mail";"prenom";"nom";"recu";"inscrit";"dt_recu";"societe";"civilite";"fonction";"adresse";"cp";"ville";"tel";"profil ";"objet ";"objet_id ";"cms_site ";"dt_crea";"dt_modif";"Theme";"abonnement" "thao@couleur-citron.com";"thao";"tran";0;1;"00/00/0000";;;"Responsable MCEF";;;;;0;-1;-1;leno;22/09/09;22/09/09;"Utilisateurs,Newsletter";4 "FIN2010-01-20";;;;;;;;;;;;;;;;
Le pénultième champ contient les éventuels abonnements multiples d'un inscrit. Les chaînes spécifiées correspondent aux libellés des catégories (ou news_theme), séparés par des virgules. A noter que les libelllés des catégories (ou news_theme) ne doivent pas contenir d'espace ou autre caractères spéciaux.
Le champ cms_site est renseigné avec la valeur cms_name du mini-site à utiliser. Ne pas renseigner de valeur d'id.
La dernière ligne peut contenir un pattern de signature pour que le processus d'import puisse s'assurer de l'intégrité du fichier traité.
Personnalisation des liens (et tracking )
Les liens inclus dans les newsletters peuvent être personnalisés pour tracker la newsletter et son inscrit. Cette personnalisation des liens est optionnelle et s'effectue comme suit :
http://domain.ext/newsletter/X/Y/frontoffice/newsletter/desinscription.php
Ou X est l'id de la newsletter, et Y l'id de l'inscrit. Une fois ré-écrit par le mod_rewrite de Apache, le lien devient :
http://domain.ext/frontoffice/newsletter/desinscription.php
Cette ré-écriture s'active avec le define suivant :
define('DEF_REWRITE_NEWSLETTER', 'ON');
Si non spécifié, la valeur par défaut est OFF.
NB : Si cette option est activé, la règle de rewrite suivante doit être activée :
En .htaccess : RewriteEngine On RewriteRule ^newsletter/([0-9]+)/([0-9]+)/(.+)$ /$3 [L] RewriteRule ^newsletter/([0-9]+)/([0-9]+)/$ / [L]
ou
En Conf. Apache : RewriteEngine On RewriteRule ^/newsletter/([0-9]+)/([0-9]+)/(.+)$ /$3 [L] RewriteRule ^/newsletter/([0-9]+)/([0-9]+)/$ / [L]
Usage de CDN
Il est possible d'activer l'usage du CDN libre Coral Networks par le define suivant :
define('DEF_CDN_NEWSLETTER', 'ON');
Si non spécifié, la valeur par défaut est OFF.
Mise en place template avec contenu dynamique
1er point : Modification du fichier config.php
Ajout des constantes suivantes :
//newsletter define("DEF_CRITERE_LIB", $_SERVER['DOCUMENT_ROOT'].'/include/modules/newsletter.lib.php'); define ("DEF_UPLOADNEWS", "/custom/upload/newsletter"); define ("DEF_ROOT_UPLOADNEWS", $_SERVER['DOCUMENT_ROOT'].DEF_UPLOADNEWS); define ("DEF_ROOT_TEMPLATENEWS", "/frontoffice/newsletter/template");
2nd point : Création d'une/des table(s) d'association entre l'objet newsletter et le/les objets métiers
Ajout d'une surchage pour la classe newsletter.class.xml dans le répertoire include/bo/cms pour y ajouter le/les association(s) du dessus.
3ième point : Paramétrage du/des thèmes des newsletters pour activer la classe de traitement des critères de newsletter
Passer le champ Utiliser les critères d'abonnement à Y dans le thème de la newsltter
4ième point : Ajout de vos traitement perso
Création du fichier newsletter.lib.php dans $_SERVER['DOCUMENT_ROOT'].'/include/modules/
<?php class critereNewsletter { public function __construct(){ } public $eIns=NULL; public $eNews=NULL; public $theme=NULL; public $bUseCriteres=NULL; public $bUseMultiple=NULL; public $lang=NULL; public function getSubject($sSubjet='', $aOs=NULL, $translator){ //Traitement spécifique pour le sujet if ($sSubjet!=''){ return $sSubjet; } else{ return false; } } public function getBody($sBodyHTML='', $aOs, $translator){ //Traitement spécifique sur le body de la newsletter //Exemple pour remplacer un partie du body par un traitement spécifique $sBodyHTML = str_replace('XX-COLLECTIONS-XX',$content,$sBodyHTML); return $sBodyHTML; } } ?>