Как добавить проверку условий, чтобы определить, какой шаблон будет использоваться в транзакционных электронных письмах?
Я пытаюсь изменить свой шаблон электронной почты, чтобы генерировать различную информацию о продукте на основе группы клиентов . Например, если клиент принадлежит к группе A, загрузите modified.phtml
, иначе загрузите default.phtml
.
В частности, я работаю с шаблоном электронной почты нового заказа, в котором базовый транзакционный шаблон электронной почты вызывает {{layout handle="sales_email_order_items" order=$order}}
, который загружает файл шаблона в /app/design/frontend/rwd/default/template/email/order/items.phtml
.
Этот шаблон в конечном итоге вызывает echo $this->getItemHtml($_item)
.
Из того, что я могу сказать, это загружает файл шаблона /app/design/frontend/rwd/default/template/email/order/items/order/default.phtml
, который выводит информацию о шаблоне для печати содержимого каждого элемента (артикул, название, цена и т.д.) в таблице.
Это то, чего я пытаюсь достичь:
$customerGroupId = $this->getCustomerGroupId();
$customerGroupName = Mage::getModel('customer/group')->load($customerGroupId)->getCustomerGroupCode();
if($customerGroupName = 'A') {
// How to getItemHtml from different template?
} else {
echo $this->getItemHtml($_item)
}
Я предполагаю, что мне нужно будет добавить ссылку на мой modified.phtml
в файл /app/design/frontend/rwd/default/layout/sales.xml
примерно так:
<sales_email_order_items>
<block type="sales/order_email_items" name="items" template="email/order/items.phtml">
<action method="addItemRender"><type>default</type><block>sales/order_email_items_order_default</block><template>email/order/items/order/default.phtml</template></action>
// modified.phtml reference here?
Могу ли я заставить getItemHtml
указать другой шаблон?
Или мне нужно подойти к этому по-другому?
Я мог бы заменить {{layout handle...}}
на {{block...}}
позвоните и поместите всю информацию о шаблоне в мои блоки if... else...
, но это кажется очень банальным. Есть какие-нибудь мысли или предложения?
1 answers
Изменение itemHtml
зависит от группы клиентов. Вы можете добиться этого в файле макета, используя вспомогательный метод.
<sales_email_order_items>
<block type="sales/order_email_items" name="items" template="email/order/items.phtml">
<action method="addItemRender"><type>default</type><block>sales/order_email_items_order_default</block><template helper="mymodule/data/myFunction"/></action>
Затем создайте функцию myFunction в своем вспомогательном файле
app/code/{local|community}/yourNamespace/yourModule/helper/Data.php.
Используйте приведенный ниже код
Обновление:
public function myFunction()
{
$customerGroupName = '';
if($customerGroupId = Mage::getSingleton('adminhtml/sales_order_create')->getQuote()->getCustomerGroupId()):
$customerGroupName = Mage::getModel('customer/group')->load($customerGroupId)->getCustomerGroupCode();
elseif(Mage::getSingleton('customer/session')->isLoggedIn()):
$customerGroupId = Mage::getSingleton('customer/session')->getCustomerGroupId();
$customerGroupName = Mage::getModel('customer/group')->load($customerGroupId)->getCustomerGroupCode();
endif;
if($customerGroupName == 'General') {
return 'email/order/items/order/default.phtml';
} else {
return 'email/order/items/order/another.phtml';
}
}
Вот и все.