我做的第一件事就是搜索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'}}
上面的代碼解析電子郵件/ templatename.phtml到電子郵件,這意味着你可以在模板中做任何事情,以顯示正確的數據。 在我們可以檢索此模板中的付款數據之前,我們必須將訂單參數與訂單數據一起添加。這很簡單;
{{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}}