我有一个问题,当客户通过网页上的联系表单给我们写信时,我想更改我们收到的电子邮件的主题。
我找到了更改它的行:
if (!Mail::Send($this->上下文->语言->id, '联系人', Mail::l('联系表中的消息').' [no_sync]',$var_list, $联系人->电子邮件,$联系人->姓名,空,空,
我想改成
Mail::l('联系表单中的消息 - 客户电子邮件')
有人知道我需要在那里写什么吗?
我尝试这样做,但它在主题中返回 0: Mail::l('联系表单的消息' - $contact->email),
sprintf(Mail::l('Message from contact form - %s'), $contact->email)
您的线路将是
if (!Mail::Send($this->context->language->id, 'contact', sprintf(Mail::l('Message from contact form - %s'), $contact->email).' [no_sync]', $var_list, $contact->email, $contact->name, null, null,
一些细节:
Mail::l()
以当前语言翻译文本,它应该是静态文本,所以 Mail::l('Message from contact form' . $contact->email)
不是一个好的解决方案。
Mail::l('Message from contact form' - $contact->email)
无法工作,PHP 在翻译之前执行'Message from contact form' - $contact->email
操作,所以翻译 0
Mail::l('Message from contact form - ') . $contact->email
可以工作,但不是一个好的做法,也许在其他语言中,电子邮件没有放在最后。此外,PrestaShop 对以空格结尾的文本的翻译很糟糕。
sprintf(Mail::l('Message from contact form - %s'), $contact->email)
使用静态文本“来自联系表单的消息 - %s”,并且 sprintf 将 %s 替换为客户的电子邮件。在其他语言中,%s 可以放置在它应该放置的位置,无需修改代码。
或者你可以为此制作一个简单的模块并使用钩子:
hookActionEmailSendBefore
在模块文件中使用类似这样的函数:
public function hookActionEmailSendBefore($params)
{
if ($params['template'] == 'contact' )
{
$emailClient= (string)$params['templateVars']['{email}'];
$params['subject'] = $params['subject']." - ".$emailClient;
}
}
我相信
contact
是用于此目的的模板名称,$params['templateVars']['{email}']
将是客户的电子邮件。
在
$params['subject']
中 - 您可以根据需要修改邮件主题。
希望有帮助