PrestaShop-如何将变量添加到电子邮件模板

时间:2019-05-29 19:09:21

标签: prestashop-1.7 prestashop-modules

我最近购买了PrestaShop 1.7.5的评论模块。

我想在模块发送的电子邮件中添加客户的电话号码。但是技术支持告诉我,自定义功能不受模块支持的限制,必须由我自己完成。

所以,我尝试自己做。

我在LGMailer.php中找到了模板变量代码:

    $template_vars = array(
        '{firstname}' => $order['firstname'],
        '{lastname}'  => $order['lastname'],
        '{storename}' => Configuration::get('PS_SHOP_NAME'),
        '{email}'     => $order['email'],
        '{id_order}'  => $order['id_order'],
        '{link}'      => $link,
        '{product_details}' => $products
    );

    return $template_vars;

由于我要添加客户电话,因此需要进行如下修改:

     $template_vars = array(
        '{firstname}' => $order['firstname'],
        '{lastname}'  => $order['lastname'],
        '{storename}' => Configuration::get('PS_SHOP_NAME'),
        '{email}'     => $order['email'],
        '{phone_mobile}'     => $order['phone_mobile'],        (Added this line)
        '{id_order}'  => $order['id_order'],
        '{link}'      => $link,
        '{product_details}' => $products
    );

    return $template_vars;
}

但是它似乎不起作用。

谁能告诉我我做错了什么?附件是php文件。

1 个答案:

答案 0 :(得分:0)

模块中的getTemplateVars()方法在cron.php文件中被调用,并且正在使用getOrders()类中的LGMailer来检索将为其发送电子邮件的订单。

如果仔细查看此方法,您会发现它没有选择“手机”列,您需要添加它。

getOrders()中编辑LGMailer.php方法:

首先,添加缺少的列

$query->select('a.`phone_mobile`');

然后,根据收货地址添加一个JOIN语句

$query->leftJoin('address', 'a', 'o.`id_address_delivery` = a.`id_address`');

最后

不要忘记在{phone_mobile}内添加opinion-request.html (您忘记附加到问题上了)。

我希望这会有所帮助!