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

PrestaShop - How to add a variable to an e-mail template

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

我想将客户的 phone 号码添加到模块发送的电子邮件中。但技术支持告诉我定制不在模块支持范围内,必须由我自己完成。

所以,我试着自己做。

我在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;

因为我想添加客户 phone 所以修改成这样:

     $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 文件。

您的模块中的 getTemplateVars() 方法在 cron.php 文件中被调用,并使用 LGMailer class 中的 getOrders() 来检索订单e-mails 将被发送。

如果您仔细查看此方法,您会发现它没有 select 移动 phone 列,您需要添加它。

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

首先,添加缺失的列

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

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

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

终于

别忘了在opinion-request.html里面加上{phone_mobile} (你忘了附在你的问题上)。

希望对您有所帮助!