Jump to content

Module Mailalert - Retours à la ligne dans le message laissé par le client


Recommended Posts

Bonjour à la communauté,

 

Je viens demander votre aide sur ce sujet, qui après nombreuses recherches et lecture du code me résiste toujours!

 

Lorsqu'un client laisse un message qui accompagne la commande, ce message est affiché dans le mail "new_order.html" envoyé par le module mailalert.

 

Problème : les retours à la ligne ne sont pas pris en compte et le message est souvent compliqué à lire pour les préparateurs de commande.

 

J'ai premièrement vérifié dans la table "ps_message" via phpmyadmin et les retours à la ligne sont bien présents.

 

Ensuite, j'ai été dans modules/mailalerts/mailalerts.php et je lis ceci :

public function getAllMessages($id)
	{
		$messages = Db::getInstance()->executeS('
			SELECT `message`
			FROM `'._DB_PREFIX_.'message`
			WHERE `id_order` = '.(int)$id.'
			ORDER BY `id_message` ASC');
		$result = array();
		foreach ($messages as $message)
			$result[] = $message['message'];

		return implode('<br/>', $result);
	}

La fonction implode('<br/>', $result) devrait donc mettre un espace entre chaque message. (je ne vois d'ailleurs pas l'utilité, puisqu'on ne peut écrire qu'un seul message avec la commande...).

 

J'ai donc modifié la ligne 226 :

public function getAllMessages($id)
	{
		$messages = Db::getInstance()->executeS('
			SELECT `message`
			FROM `'._DB_PREFIX_.'message`
			WHERE `id_order` = '.(int)$id.'
			ORDER BY `id_message` ASC');
		$result = array();
		foreach ($messages as $message)
			$result[] = nl2br($message['message']);

		return implode('<br/>', $result);
	}

Vu que php fait appel à la table, il récupère également les retours à la ligne. Normalement, avec la fonction nl2br, il devrait les convertir en <br/>.

 

Et bien rien à faire!! Les messages dans le mail "new_order.html" n'ont toujours pas de retour à la ligne...

 

J'ai même essayé de créer un plugin smarty nl2br et d'appeler ce plugin directement dans "new_order.html" comm e ceci :

<td width="10" style="padding:7px 0"> </td>
				<td style="padding:7px 0">
					<font size="2" face="Open-sans, sans-serif" color="#555454">
						<p data-html-only="1" style="border-bottom:1px solid #D6D4D4;margin:3px 0 7px;text-transform:uppercase;font-weight:500;font-size:18px;padding-bottom:10px">
							INFORMATIONS :						</p>
						<span style="color:red; font-size: 20px;">
							{message|nl2br}
						</span>
					</font>
				</td>

Ce qui a pour résultat d'afficher "{message|nl2br}" dans le mail au lieu du message laissé par le client...

 

Quelqu'un aurait-il la solution? Ou tout du moins un début? Une piste?

 

Merci d'avance à vous tous et bonne journée!

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

  • 2 weeks later...

Premièrement quelle version Prestashop utilises-tu?

Deuxièmement quelle version du module utilises-tu?

 

Troisièmement les mails ne sont pas gérés par smarty mais par le décorateur de SwiftMail dans ton cas

 

Donc dans mailalerts.php à une ligne que tu devra trouver par toi même, il y a écrit:

'{message}' => $message

remplace par

'{message}' => Tools::nl2br($message)

Je te conseille d'enlever tes modifs également elle ne servent à rien

Link to comment
Share on other sites

Bonjour doekia et merci de ta réponse.

 

Prestashop 1.6.0.9

Version module : v3.4.9

 

J'ai bien essayé ce que tu me suggères de faire, et ça crée un espace au lieu d'un break...

 

Une idée?

 

 

Merci d'avance

Link to comment
Share on other sites

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...