내가 한 첫 번째 작업은 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()->toHtml()
또는 처리 할
$this->getOrder()->getPayment()
할 수 있습니다.
보너스; 또 다른 해결책은 레이아웃 핸들로 작업하고 같은 이메일의 주문 항목에 대한 예 아래 layout.xml에 올바른 템플릿과 유형을 설정하는 것입니다. 블록과 동일하게 작동하지만 레이아웃 xml의 일부 설정 만 사용합니다.
{{layout handle="sales_email_order_items" order=$order}}