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;				

	}
}
?>