【问题标题】:Magento: How to get current date in magento email templateMagento:如何在 magento 电子邮件模板中获取当前日期
【发布时间】:2014-11-04 06:25:43
【问题描述】:

如何在 Magento 电子邮件模板中获取当前日期?

{{var dateAndTime}} 不起作用。我需要获取发送电子邮件的当前日期。

【问题讨论】:

  • 请在此处提供一些代码。这样我就可以结帐了。
  • 你看this了吗?

标签: magento email


【解决方案1】:

您有 2 个选项。
选项 1。 是重写发送电子邮件的方法并将当前日期作为参数传递。
例如,假设您想在订单电子邮件中显示日期。
为此,您需要重写 Mage_Sales_Model_Order::sendNewOrderEmail 方法。
你需要改变这个:

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

到这里:

   $mailer->setTemplateParams(array(
            'order'        => $this,
            'billing'      => $this->getBillingAddress(),
            'payment_html' => $paymentBlockHtml,
            'dateAndTime'  => Mage::getModel('core/date')->date('Y-m-d H:i:s'), //change format as needed.
        )
    );

然后您将能够在新的订单电子邮件模板中使用{{var dateAndTime}}
如果您只想在一个模板中使用日期和时间,这会很方便。
如果您想要更一般的情况,您需要创建自己的指令,请参阅选项 2。

选项 2 创建您自己的 {{}} 指令。
假设您希望在每封电子邮件中使用 {{dateAndTime}} 打印到当前日期和时间。
您需要重写 Mage_Widget_Model_Template_Filter 类并为其添加新方法。
See this detailed explanation about how to do it
您的新方法应如下所示:

public function dateAndTimeDirective($construction) {
    return Mage::getModel('core/date')->date('Y-m-d H:i:s');
}

您甚至可以将其提升一个档次,并能够像这样将日期格式作为参数传递:

 {{dateAndTime format="Y-m-d"}}

在这种情况下,您处理指令的方法应如下所示:

public function dateAndTimeDirective($construction) {
    $params = $this->_getIncludeParameters($construction[2]); 
    $format = isset($params['format']) ? $params['format'] : 'Y-m-d H:i:s'
    return Mage::getModel('core/date')->date($format);
}

【讨论】:

  • 抱歉回复晚了。在Mage_Widget_Model_Template_Filter 上添加方法不起作用,我不知道为什么。但我在Mage_Core_Model_Email_Template_Filter 上添加了相同的方法并且它有效。非常感谢。
【解决方案2】:
  1. 从管理面板转到您的电子邮件模板。使用块指令如下

    当前日期是:

    {{block type='core/template' area='frontend' template='page/html/date.phtml'}}
    
  2. 现在在您的模板中创建一个新文件date.phtml,如下所示

    app/design/frontend/yourtheme/yourtemplate/page/html/date.phtml
    
  3. 在 php 标签中添加以下代码(使用 php 日期函数并回显当前日期,即date('d-m-Y')

    <pre><code>
        $date = date('d-m-Y');
        echo $date;
    </code></pre>
    

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-17
    • 1970-01-01
    • 2013-01-14
    • 1970-01-01
    • 2023-03-31
    相关资源
    最近更新 更多