You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在PrestaShop模块hookActionProductCancel中发送自定义模板邮件的问题

解决PrestaShop模块中Mail::Send指向自定义邮件模板的问题

嘿,我之前开发PrestaShop模块时也碰到过一模一样的问题,其实只要给Mail::Send方法补上最后一个参数就能搞定,具体操作如下:

核心修改逻辑

PrestaShop的Mail::Send默认会从当前主题的mails目录加载模板,要让它指向你自定义模块的模板,只需要手动把模块的模板目录路径作为最后一个参数传递给方法就行。

修改后的完整代码

你已经定义好了$template_path变量,只需要把它加到Mail::Send的参数列表末尾:

$template_path = $this->local_path . 'mails/';
Mail::Send(
    (int)Configuration::get('PS_LANG_DEFAULT'),
    'xxx', // 这里填你的模板文件名(不用带.tpl后缀)
    'Subject',
    array(
        '{aaa}' => $bbb,
        '{bbb}' => $ccc,
        '{ccc}' => $ddd,
        '{ddd}' => $eee
    ),
    $to,
    null,
    null,
    null,
    null,
    null,
    $template_path // 关键:加上这个参数,指定模块的邮件模板目录
);

额外注意事项

  • 模板文件要按语言分类存放:比如默认语言是英文,那模板文件得放在/你的模块目录/mails/en/xxx.tpl,PrestaShop会根据你传入的语言参数自动匹配对应目录下的模板
  • $this->local_path是PrestaShop模块类自带的变量,会直接指向模块的根目录,这个路径是完全可靠的
  • 如果你用的是PrestaShop 1.7及以上版本,这个方法依然完全兼容,不用考虑版本适配问题

内容的提问来源于stack exchange,提问作者Enthu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:56:28