Standards Emailing

Dimensions d’un emailing

Pensez vos dimensions, notamment la largeur. Il n’existe pas réellement de taille standard, cependant je vous conseille de rester aux environs des 600 pixels, cela pour permettre une bonne lisibilité sur le plus grand nombre de supports. Prenons l’exemple de l’iPhone 3 avec ses 320 pixels de large : même si le contenu de l’emailing ne s’adaptera pas (comme avec du responsive webdesign) la lecture sera tout à fait acceptable.

La hauteur sera variable en fonction de votre contenu, mais gardez bien en tête que les éléments importants devront être placés là où ils seront le plus visibles, c’est à dire au dessus de la ligne de flottaison.
“Mais qu’est-ce que la ligne de flottaison” me direz-vous ? il s’agit d’une ligne “imaginaire”, fixée à 570 pixels de hauteur lorsque vous réalisez vos templates, qui symbolise la limite de la partie visible d’une page avant le scroll.

Ligne de flottaison

Le choix des polices

Lorsque de la création, il vous faudra penser aux questions de typographie, à savoir quels textes seront en images et lesquels seront en police web. Sur un emailing, il est conseillé de respecter un ratio texte/image de 50% environ, sous peine de passer en spam lors de l’envoi.
De même le choix des accroches, des textes est important ! Sachez que tout mot trop connoté commercial ou promotionnel est reconnu comme spam. Veillez donc à en utiliser le moins possible, voire pas du tout.

Éviter les choses trop alambiquées

Comme dit précédemment, il faut rester simple dans votre créa. Évitez par exemple les blocs aux bords arrondis avec du texte web
à l’intérieur, ou alors pensez bien qu’il faudra le découper correctement de chaque côté.
Préférez également les fonds unis aux dégradés pour les blocs de texte, car lors de l’intégration vous ne pourrez pas utiliser la propriété « background-image » qui n’est pas du tout interprétée.

Dernier conseil : n’oubliez pas d’optimiser le poids de vos images, tout comme vous le feriez pour un site web.

Créer une page en construction WordPress

à mettre dans le functions.php
et faire la page.html

function my_page_template_redirect()
{
    if( ! is_user_logged_in() )
    {
        wp_redirect(  '/page.html'  );
        exit();
    }
}
add_action( 'template_redirect', 'my_page_template_redirect' );

ou alors

function wp_maintenance_mode(){
    if( !is_user_logged_in()){
        wp_die('

BIENTÔT DISPONIBLE



'); } } add_action('get_header', 'wp_maintenance_mode');

Trame pour e-commerce Prestashop

– Multiboutique
– Multilangue
– Multi devise

– Produits : utilisation des déclinaisons ?

– Gestion des stocks
Si oui. Commande possible si hors stock ?
– Frais de port (La poste ? par prix/par poids/forfaitaire)

Paiement

  •  Chèque :  Quel ordre ?
  • Virement : Infos compte
  • Paypal : Quel compte ?
  • CB : Quel banque ?

– Alerte lors d’un nouvelle commande ? vers quellle adresse e-mail ?
– Génération des factures dans le compte client ? Si oui, quelle mention légales en bas de page  ?

– CGV
-Mentions légales

Envoi d’une newsletter

A demander au client

  •  Sujet
  • Adresse d expédition (tester si possibilité de valider tout le domaine ou pas )
  • Adresse de réponse
  • Vérifier si adresse mail créée et existante

Code

Désinscription

Pour vous désinscrire à la liste de diffusion, <a target= »_blank » title= »Désincription Newsletter » href= »[[UNSUB_LINK_FR]] »>Cliquez ici</a>

Version en ligne

<a href= »[[PERMALINK]] » target= »_blank » style= »line-height:1;vertical-align:bottom;color:#0f0f0f;font-family:arial;font-size:12px;border:none »>Voir la version en ligne</a>

htaccess

Redirect permanent

Redirect permanent /ancien_repertoire http://nouveau-site.tld/nouveau_repertoire
Redirect permanent /ancien_fichier.php http://site.tld/nouveau_fichier.php

Rediriger tout sauf un dossier

RewriteEngine on
RewriteCond %{REQUEST_URI} !doli/(.*)$
RewriteRule (.*) http://aenor-voeux.com/dev02/ [QSA,R=301,L]

Rediriger le nom de domaine

#Redirection de l'ancien nom de domaine
RewriteCond %{HTTP_HOST} ^(?:www\.)?atelier-b-attitude\.com [NC]
RewriteRule ^/?(.*) https://www.sweetcasita.fr/$1 [L,R=301]

Rediriger avec des paramètres dans l’url

RewriteCond %{QUERY_STRING} ^option=com_content&view=category&layout=blog&id=93&Itemid=618$
RewriteRule ^index\.php$ https://www.leventdessignes.fr/saison/? [L,R=301]

Autres exemples

Aénor voeux

– Créer les produits avec 2 déclinaisons  : une avec attribut format vierge et l’autre avec attribut format personnalisé
– Ajouter les règles de prix dans la fiche produit
– Ajouter la personnalisation. 1 de type fichier, 3 de type texte (personnalisation,Texte et Adresse et coordonnées)

étendre la perso à tous les produits (aen-admin/genererSQL.php):

ini_set('display_errors','on');
error_reporting(E_ALL);

define('_PS_ADMIN_DIR_', getcwd());
define('PS_ADMIN_DIR', _PS_ADMIN_DIR_); // Retro-compatibility

include(PS_ADMIN_DIR.'/../config/config.inc.php');

$products = Db::getInstance()->ExecuteS('SELECT id_product	FROM '._DB_PREFIX_.'product p');

foreach($products as $product)
{
	#image
	$sql = 'INSERT INTO '._DB_PREFIX_.'customization_field (`id_product`, `type`, `required`)
	VALUES ('.$product['id_product'].',0,0)';
	Db::getInstance()->ExecuteS($sql);
	$id_custom = Db::getInstance()->Insert_ID(); 
	$sql = 'INSERT INTO '._DB_PREFIX_.'customization_field_lang (`id_customization_field`, `id_lang`, `name`)
	VALUES ('.$id_custom.',1,"")';
	Db::getInstance()->ExecuteS($sql);
	
	#perso
	$sql = 'INSERT INTO '._DB_PREFIX_.'customization_field (`id_product`, `type`, `required`)
	VALUES ('.$product['id_product'].',1,0)';
	Db::getInstance()->ExecuteS($sql);
	$id_custom = Db::getInstance()->Insert_ID(); 
	$sql = 'INSERT INTO '._DB_PREFIX_.'customization_field_lang (`id_customization_field`, `id_lang`, `name`)
	VALUES ('.$id_custom.',1,"personnalisation")';
	Db::getInstance()->ExecuteS($sql);
	
	#Texte
	$sql = 'INSERT INTO '._DB_PREFIX_.'customization_field (`id_product`, `type`, `required`)
	VALUES ('.$product['id_product'].',1,0)';
	Db::getInstance()->ExecuteS($sql);
	$id_custom = Db::getInstance()->Insert_ID(); 
	$sql = 'INSERT INTO '._DB_PREFIX_.'customization_field_lang (`id_customization_field`, `id_lang`, `name`)
	VALUES ('.$id_custom.',1,"Texte")';
	Db::getInstance()->ExecuteS($sql);
	
	#Adresse et coordonnées
	$sql = 'INSERT INTO '._DB_PREFIX_.'customization_field (`id_product`, `type`, `required`)
	VALUES ('.$product['id_product'].',1,0)';
	Db::getInstance()->ExecuteS($sql);
	$id_custom = Db::getInstance()->Insert_ID(); 
	echo $sql = 'INSERT INTO '._DB_PREFIX_.'customization_field_lang (`id_customization_field`, `id_lang`, `name`)
	VALUES ('.$id_custom.',1,"Adresse et coordonnées")';
	Db::getInstance()->ExecuteS($sql);
}

Puis

UPDATE `avps_product` SET `customizable` = 1,`uploadable_files` = 1,`text_fields` = 3 WHERE 1 ;
UPDATE `avps_product_shop` SET `customizable` = 1,`uploadable_files` = 1,`text_fields` = 3 WHERE 1;

Pour modifier les prix de base des déclinaisons

UPDATE `avps_product_attribute` pa
INNER JOIN avps_product p ON pa.`id_product`= p.`id_product`
INNER JOIN avps_product_attribute_combination pac ON pa.`id_product_attribute`=pac.`id_product_attribute`
SET pa.price = 0.84
WHERE id_category_default IN(12,13) AND `id_attribute` IN(7,10) AND p.id_product IN (SELECT `id_product` FROM `avps_category_product` WHERE `id_category`=9 )

UPDATE `avps_product_attribute_shop` pas
INNER JOIN avps_product_attribute pa ON pas.`id_product_attribute`= pa.`id_product_attribute`
SET pas.price = pa.price

– Recopier les prix spécifiques à partir d’un produit modèle vers tous les autres (aen-admin/genererSQL.php)

## Insertion des prix spécifiques
# vierge 11 / perso 7,10
$product_modele = 5;
$product_attribute_modele = 23;
$attribute_modele = '7,10';
$sql = 'SELECT pa.id_product,pa.id_product_attribute 
		FROM `'._DB_PREFIX_.'product_attribute` pa 
		INNER JOIN '._DB_PREFIX_.'product p ON pa.`id_product`= p.`id_product` 
		INNER JOIN '._DB_PREFIX_.'product_attribute_combination pac ON pa.`id_product_attribute`=pac.`id_product_attribute` 
		WHERE id_category_default IN(12,13) AND `id_attribute` IN('.$attribute_modele.') AND p.id_product 
					 IN (SELECT `id_product` FROM `'._DB_PREFIX_.'category_product` WHERE `id_category`=9 ) 
				AND p.id_product<>'.$product_modele.'
		ORDER BY `pa`.`id_product` ASC ';
$products = Db::getInstance()->ExecuteS($sql);



foreach($products as $product)
{
	
		echo $sql = "INSERT INTO `"._DB_PREFIX_."specific_price`(`id_product`, `id_product_attribute`, `price`, `from_quantity`, `reduction`, `reduction_type`) 
					SELECT '".$product['id_product']."', '".$product['id_product_attribute']."', `price`, `from_quantity`, `reduction`, `reduction_type` 
					FROM `"._DB_PREFIX_."specific_price` 
					WHERE id_product=".$product_modele." AND id_product_attribute = ".$product_attribute_modele.";\r\n";
		
		
		//Db::getInstance()->ExecuteS($sql);
	
}

Pour le regroupement des quantités sur l’ensemble des cartes :
Modifier le calcul de la quantité dans le fichier class/Product.php

$cat_cumul = array(12,13);
$id_category_default = Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue('SELECT id_category_default FROM `'._DB_PREFIX_.'product` WHERE `id_product` = '.(int)($id_product));

if (in_array($id_category_default,$cat_cumul))
{
	$quantity_cumul = Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue('SELECT SUM(c.`quantity`) 
			FROM `'._DB_PREFIX_.'cart_product` c INNER JOIN `'._DB_PREFIX_.'product` p USING ( id_product )
			WHERE `id_category_default` IN('.implode(',',$cat_cumul).') AND `id_cart` = '.(int)($id_cart));
	$cart_quantity = $quantity_cumul ? $quantity_cumul : $cart_quantity;
}

Pour ajouter sauver les paramètres de personnalisation directement en appelant le panier et pas dans la page produit. Dans le fichier CartController.php:

$perso_rapido = Tools::getValue('perso_rapido');
if ($perso_rapido & Tools::isSubmit('submitCustomizedDatas'))
{
	/* Product pictures management */
	require_once('images.inc.php');

	$this->pictureUpload($product, $this->context->cart);
	$this->textRecord($product, $this->context->cart);
	
}

Gérer les liens, images et URL dans les templates

WordPress

<a href="<?php echo site_url('/contact/'); ?>">Contact</a>

=> http://www.pixbulledev.com/dev1/contact/

ou

<img src="<?php echo get_site_url(); ?>/logo.jpg" />

=> http://www.pixbulledev.com/dev1/logo.jpg

et pour pointer directement dans le répertoire du thème

<img src="<?php bloginfo( 'template_url' ); ?>/img/logo.png" alt="Mon logo"/>

=> http://www.pixbulledev.com/dev1/wp-content/themes/montheme1/img/logo.png

Prestashop (fichiers .tpl)

<a href="{$base_dir}/contact/">

=> http://www.pixbulledev.com/dev1/contact/

et pour pointer directement dans le répertoire du thème

<img src="{$tpl_dir}img/logo.jpg" />

ou

<img src="{$img_dir}logo.jpg" />

=> http://www.pixbulledev.com/dev1/themes/montheme1/img/logo.png

dans le même principe pour les css :

<link href="{$css_dir}style.css" rel="stylesheet" type="text/css" media="all" />

=> http://www.pixbulledev.com/dev1/themes/montheme1/css/style.css

Swan

<a href="<?php echo site_url('/contact/'); ?>">Contact</a>

=> http://www.pixbulledev.com/dev1/contact/

robot.txt

De base :

User-agent: *
Allow: /

Pour tout bloquer :

User-agent: *
Disallow: /

Pour wordpress

User-agent: *
Disallow: /wp-login.php
Disallow: /wp-admin/
Disallow: /wp-includes/