我做的第一件事是搜索 Magento 的源代码。假设{{var payment_html}} 是在我在payment_html 上搜索的某处处理的。
有几个结果与搜索匹配;
Mage_Sales_Model_Order
Mage_Sales_Model_Order_Creditmemo
Mage_Sales_Model_Order_Invoice
Mage_Sales_Model_Order_Shipment
因此,该付款块的信息必须在其中。我拿了Mage_Sales_Model_Order 并检查了变量$paymentBlockHtml。这指向通过支付信息填充支付块的进一步逻辑。它正在创建一个块,看起来这在第一次看起来并不容易扩展/更改/修改。
是的,我们可以将模板应用于特定的(支付)块类型,因为创建了一个块,但我们无法轻松检查要加载哪个块。模板在Mage_Payment_Block_Info的构造中也被否决了
让我们检查一下。
让我们做一些很酷的事情,为什么我们不向包含正确信息的电子邮件添加一个块,但更重要的是可以切换到正确的大小写。由于模板解析器用于解析变量和布局句柄,我们可以添加以下内容而不是 {{var payment_html}} 块并在块本身中检索该信息。
{{block type='core/template' template='email/templatename.phtml'}}
上面的代码将 email/templatename.phtml 解析为电子邮件,这意味着您可以在该模板中执行任何操作来显示正确的数据。
在我们可以在此模板中检索付款数据之前,我们必须将 order 参数与订单数据一起添加。这很简单;
{{block type='core/template' order=$order template='email/templatename.phtml'}}
在模板中我们可以通过$this->getOrder()->getPayment() 来检索支付信息,或者$this->getOrder->getPayment()->toHtml() 或者以其他方式处理数据。
奖金;
另一种解决方案是使用布局句柄并在 layout.xml 中设置正确的模板和类型,下面是同一电子邮件中订单项的示例。它与块的工作方式相同,但只有布局 xml 中的一些设置。
{{layout handle="sales_email_order_items" order=$order}}