Jump to content

RESOLU || Ajout de la variable {carrier} sur tous les templates de mails


Recommended Posts

Salut à tous !

 

Hébergeur : OVH dédié entreprise

Version de Prestashop : 1.6.0.11

 

Voici ma problématique : pour un client j'ai besoin d'afficher le transporteur de la commande x dans chaque mail envoyé lorsque la commande change d'état. Je dispose d'un module super sympa qui permet à l'administrateur de changer le transporteur depuis le back-office, mais je souhaite que lorsque la commande change d'état, le mail envoyé (du genre in_transit) précise le transporteur, qu'il aie changé ou non.

 

 

Je me sens un peu nul à demander ça là où pas mal de personnes ont déjà parlé de la class mail sur le forum, et je l'utilise déjà sur certains modules custom, mais récupérer l'info du transporteur pour une commande précise, et renvoyer la valeur dans un template de mail, ben là je sèche un peu... J'ai hésité à faire une requête à la base de données pour récupérer l'info, mais après faut bien l'envoyer dans le template de mail, et je doute que ce soit à la fois le plus propre et le plus facile...

 

Donc merci de vos idées et/ou de vos infos !

 

P.S. : et si au passage vous savez comment virer tous les prix partout sur Prestashop tout en conservant le processus de commande, ça m'aiderait bien, il y en a toujours un ou deux qui traîne, notamment sur le mail de conf de commande. Encore merci !

 

 

Edited by cyssoo (see edit history)
Link to comment
Share on other sites

Bonjour,

 

il faudrait overrider la fonction addWithMail de la classe Order/OrderHistory.php.

 

avant la fonction de l'envoi de mail, il faudrait ajouter quelquechose comme

if ($this->id_order == x)
{
$id_carrier = $order->id_carrier;
$carrier = new Carrier((int)$id_carrier, $order->id_lang);
$data['{carrier_name}'] = $carrier->name;
}
Link to comment
Share on other sites

En termes de surcharges, je serais plus partant d'intégrer cette modification: https://github.com/PrestaShop/PrestaShop/pull/2554/files

 

Ainsi, vous aurez la possibilité d'ajouter un module ayant ce type de point d'accroche:

public function hookActionGetExtraMailTemplateVars($params)
{
	$template = $params['template'];
	$template_vars = $params['template_vars'];
	$extra_template_vars = $params['extra_template_vars'];

	if ($template == 'in_transit')
		$params['extra_template_vars']['{carrier}'] = $this->l('Carrier name');
}

Cette proposition est établie sur GitHub et pourrait être intégrée par la suite dans PrestaShop (vous permettant ainsi de supprimer la surcharge par la suite).

Link to comment
Share on other sites

OK, merci, voici ce que j'ai fait :
 
J'ai fait une simple surcharge de la class orderHistory avec cette info (à partir de la ligne 390) :

 
$id_carrier = $order->id_carrier;
$carrier = new Carrier((int)$id_carrier, $order->id_lang);
 
$data = array(
'{lastname}' => $result['lastname'],
'{firstname}' => $result['firstname'],
'{id_order}' => (int)$this->id_order,
'{carrier}' => $carrier->name,
'{order_name}' => $order->getUniqReference()
);
 

Le tout fonctionne bien, c'est nickel !  :)
 
D'un autre côté, dans le cadre de développement de module, je vais utiliser la surcharge de la class mail proposée sur Github, elle m'aidera beaucoup et je la trouve même essentielle pour maîtriser totalement les variables sur les templates de mail.
 
Merci à vous   !

Edited by cyssoo (see edit history)
  • Like 1
Link to comment
Share on other sites

  • 6 months later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...