2014-11-04 63 views
2

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

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

+0

请在这里提供一些代码。这样我就可以结帐。 – Elavarasan 2014-11-04 07:10:26

+0

你看过[this](http://stackoverflow.com/questions/19221799/hide-time-in-transaction-mails-with-var-order-getcreatedatformatedshort)吗? – VivienG 2014-11-04 08:25:58

回答

4

您有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); 
} 
+0

对于迟到的回复感到抱歉。在Mage_Widget_Model_Template_Filter上添加方法无效,我不知道为什么。但是我在'Mage_Core_Model_Email_Template_Filter'上添加了相同的方法,并且工作正常。非常感谢。 – Manoj 2014-12-01 10:55:54

1
  1. 从管理面板转到您的电子邮件模板。使用块指令如下

    当前日期是:

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

    app/design/frontend/yourtheme/yourtemplate/page/html/date.phtml 
    
  3. 添加以下代码(使用PHP的日期功能和回波当前日期,即date('d-m-Y')

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

希望这会有所帮助!

相关问题