Prestashop 1.6在邮件模板中添加产品的制造商名称

时间:2016-01-04 19:41:10

标签: email templates smarty prestashop prestashop-1.6

我想在新订单电子邮件中添加产品的制造商名称。客户方和管理方。

所以,我试图编辑/mails/fr/order_conf_product_list.tpl文件以添加一个新单元格

  

{$产物[ 'MANUFACTURER_NAME']}

但没有机会。

我已经从论坛中尝试了几个提示,如下所示,但是单元格仍然是空的......

https://www.prestash...turer-reference

任何帮助都将受到赞赏。

非常感谢。

2 个答案:

答案 0 :(得分:2)

要实现此操作,您需要在添加变量制造商

之前

对于您的测试,您可以编辑文件[your_shop] /classes/PaymentModule.php(但更好的解决方案是使用覆盖):

1 - 保留制造商对象

2 - 在product_var_tpl中添加制造商对象

foreach ($order->product_list as $product) {
 $manufacturer = new Manufacturer((int)$product['id_manufacturer']);
 ****
  $product_var_tpl = array(
'manufacturer' => $manufacturer,
'reference' => $product['reference'],
'name' => $product['name'].(isset($product['attributes']) ? ' - '.$product['attributes'] : ''),
'unit_price' => Tools::displayPrice($product_price, $this->context->currency, false),
'price' => Tools::displayPrice($product_price * $product['quantity'], $this->context->currency, false),
'quantity' => $product['quantity'],
'customization' => array()
                        );

}

在您的文件/mails/fr/order_conf_product_list.tpl

您可以使用对象'制造商'

{$product['manufacturer']->name}

答案 1 :(得分:0)

正如@timactive所写,在客户邮件上获取制造商名称的解决方案是编辑PaymentModule.php。

因此,要在客户邮件中获取制造商的名称:

PaymentModule.php:

             foreach ($order->product_list as $product) {

                $manufacturer = new Manufacturer((int)$product['id_manufacturer']);

                $product_var_tpl = array(
                    'reference' => $product['reference'],
                    'name' => $product['name'].(isset($product['attributes']) ? ' - '.$product['attributes'] : ''),
                    'unit_price' => Tools::displayPrice($product_price, $this->context->currency, false),
                    'price' => Tools::displayPrice($product_price * $product['quantity'], $this->context->currency, false),
                    'quantity' => $product['quantity'],
                    'customization' => array(),
                    'manufacturer' => $manufacturer->name
                );

而不是在order_conf_product_list.html中,像这样调用产品对象:

            {$product['manufacturer']}

它是解决方案的一部分,因为我想在管理新订单邮件上添加制造商的名称。

在管理新订单邮件中添加制造商的名称:

要完成此操作,我必须像这样编辑MailAlert模块:

在mailalert.php中,在函数" hookActionValidateOrder" :

foreach ($products as $key => $product)
    {
        $manufacturer = new Manufacturer($product['id_manufacturer'], $id_lang);
        $items_table .=
            '<tr style="background-color:'.($key % 2 ? '#DDE2E6' : '#EBECEE').';">
                <td style="padding:0.6em 0.4em;">'.$product['product_reference'].'</td>
                <td style="padding:0.6em 0.4em;">'.$manufacturer->name.'</td>
                <td style="padding:0.6em 0.4em;">
                    <strong><a href="'.$url.'">'.$product['product_name'].'</a>'
                        .(isset($product['attributes_small']) ? ' '.$product['attributes_small'] : '')
                        .(!empty($customization_text) ? '<br />'.$customization_text : '')
                    .'</strong>
                </td>
                <td style="padding:0.6em 0.4em; text-align:right;">'.Tools::displayPrice($unit_price, $currency, false).'</td>
                <td style="padding:0.6em 0.4em; text-align:center;">'.(int)$product['product_quantity'].'</td>
                <td style="padding:0.6em 0.4em; text-align:right;">'
                    .Tools::displayPrice(($unit_price * $product['product_quantity']), $currency, false)
                .'</td>
            </tr>';

现在,要创建到单元格,请转到mailalert / mails / fr / new-order.html并在第114行添加此行:

                <th style="border:1px solid #D6D4D4;background-color:#fbfbfb;font-family:Arial;color:#333;font-size:13px;padding:10px">Marque</th>