【问题标题】:Magento- new order notification email add custom field- table sales_flat_orderMagento-新订单通知电子邮件添加自定义字段-表sales_flat_order
【发布时间】:2013-08-24 10:09:24
【问题描述】:

我想在新订单电子邮件通知中添加自定义变量,其中包含从表 sales_flat_order 填充的值(即heared4us)。我该怎么做?

我使用的是 magento 1.7.0.2 版

谢谢。

【问题讨论】:

    标签: magento


    【解决方案1】:

    要为订购电子邮件添加新字段,您需要执行以下 2 个步骤

    1) 编辑 sendNewOrderEmail() 函数位于

    app/code/core/Mage/Sales/Model/Order.php

    在该函数中,您将找到以下代码

     $mailer->setTemplateParams(array(
          'order'        =>  $this,
          'billing'      =>  $this->getBillingAddress(),
          'payment_html' => $paymentBlockHtml,
       ));
    

    您需要添加新的键值对来添加新的自定义值

     $mailer->setTemplateParams(array(
              'order'        =>  $this,
              'billing'      =>  $this->getBillingAddress(),
              'payment_html' => $paymentBlockHtml,
              'customvalue'  => 'This is a custom value' //New custom value
           ));
    

    2) 现在是第二部分。您需要将自定义变量添加到新订单电子邮件模板。 只需编辑模板添加您的自定义参数名称。在示例中为“customvalue”。

    {{ var customvalue }}
    

    对于英语,订单电子邮件模板位于

    • app\locale\en_US\template\email\sales\order_new.html
    • app\locale\en_US\template\email\sales\order_new_guest.html

    因此,根据您在网站中使用的语言选择位于 locale 文件夹中的正确模板。

    您还可以从管理员编辑电子邮件模板,方法是导航到

    系统 > 交易邮件 > 新订单邮件

    【讨论】:

    • 谢谢。还有一个问题...我在表 sales_flat_order 中有自定义字段heared4us,如何在 sendNewOrderEmail() 函数下检索相同的字段以将其值传递给自定义字段?
    • 在 setTemplateParams() 函数中 $this 是当前订单对象。所以如果你做 print_r($this->getData()) 你可以检查所有的订单信息都在那里。
    • 试过 var_dump($this->getData());但它有超过 14 MB 的数据,无法加载,Crashes firefox。也尝试使用日志。有什么方法可以找回吗?尝试使用 $this->getfieldname() 和 $this->getData('fieldname')。两者都不起作用。有什么建议吗?
    • 查看这篇帖子code.marksserver.co.uk/magento/orders/magento-get-order-details/…。使用 $this->getId() 获取订单id。
    • 您好,和我一样的问题,请任何人帮助我。我已在订单电子邮件中显示自定义字段值。我正在使用这个扩展。 atomicpages.net/blog/2011/06/23/…请帮帮我
    【解决方案2】:
    public function execute(\Magento\Framework\Event\Observer $observer) {
        $transport = $observer->getEvent()->getTransport();
        $transportObj = $observer->getData('transportObject');        
        /** @var \Magento\Framework\App\Action\Action $controller*/
        $transport = $observer->getTransport();
        $transportObj->setData('custom_content',"custom content 123");
        return $transportObj;
    

    }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-25
      • 2015-02-15
      相关资源
      最近更新 更多