Транзакционная электронная почта: как создать шаблон 'sales_email_order_items' (или как переопределить шаблон adminhtml)

15

В коде транзакционной электронной почты я вижу это:

{{layout handle="sales_email_order_items" order=$order}}
{{var items_html}}

Который, я полагаю, относится к этому файлу шаблона:

/app/design/adminhtml/default/default/template/email/order/items.phtml

Я попытался создать новую папку с нашей темой, чтобы избежать перезаписи основных файлов:

/app/design/our_theme/default/default/template/email/order/items.phtml

Но это, похоже, не работает, есть ли правильный способ переопределить этот файл без простой перезаписи ядра?

waffl
источник

Ответы:

20

На самом деле это относится к дескриптору XML макета, который вы можете найти в sales.xmlфайле около строки 268.

Там вы можете найти следующие теги

<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>
        <action method="addItemRender"><type>grouped</type><block>sales/order_email_items_order_grouped</block><template>email/order/items/order/default.phtml</template></action>
        <block type="sales/order_totals" name="order_totals" template="sales/order/totals.phtml">
            <action method="setLabelProperties"><value>colspan="3" align="right" style="padding:3px 9px"</value></action>
            <action method="setValueProperties"><value>align="right" style="padding:3px 9px"</value></action>
            <block type="tax/sales_order_tax" name="tax" template="tax/order/tax.phtml">
                <action method="setIsPlaneMode"><value>1</value></action>
            </block>
        </block>
    </block>
    <block type="core/text_list" name="additional.product.info" />
</sales_email_order_items>

Вы можете скопировать это в свои собственные темы local.xmlи редактировать все, что вам нужно. В вашем случае это будет сброс файла шаблона следующим образом:

<sales_email_order_items>
    <reference name="items">
        <action method="setTemplate">
            <template>yourdirectory/order/items.phtml</template>
        </action>
    </reference>
</sales_email_order_items>
Сандер Мангель
источник
Ой, ты совершенно прав. Спасибо! Приму, когда это возможно :)
вафля
Нет проблем, это может несколько запутать :)
Сандер Мангель
@SanderMangel Как я могу создать {{layout handle = "sales_email_order_items" order = $ order}}, отличный от значения по умолчанию, которое я буду использовать в шаблонах электронной почты (кроме шаблона электронной почты для подтверждения заказа)
Mukesh
Я не уверен, что вы имеете в виду, но вы можете вызвать любой дескриптор из local.xml из вашего шаблона электронной почты. Так что вы можете создать новый, если хотите
Сандер Мангель
6

Вы можете увидеть, какой шаблон "sales_email_order_items" ссылается на

app/design/frontend/base/default/layout/sales.xml
app/design/frontend/base/default/layout/bundle.xml
app/design/frontend/base/default/layout/downloadable.xml

В app/design/frontend/base/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>
            <action method="addItemRender"><type>grouped</type><block>sales/order_email_items_order_grouped</block><template>email/order/items/order/default.phtml</template></action>
            <block type="sales/order_totals" name="order_totals" template="sales/order/totals.phtml">
                <action method="setLabelProperties"><value>colspan="3" align="right" style="padding:3px 9px"</value></action>
                <action method="setValueProperties"><value>align="right" style="padding:3px 9px"</value></action>
                <block type="tax/sales_order_tax" name="tax" template="tax/order/tax.phtml">
                    <action method="setIsPlaneMode"><value>1</value></action>
                </block>
            </block>
        </block>
        <block type="core/text_list" name="additional.product.info" />
    </sales_email_order_items>

Здесь вы можете узнать путь: template="email/order/items.phtml"

Ваша структура каталогов /app/design/our_theme/default/default/template/email/order/items.phtmlкажется неправильной, особенно часть /app/design/our_theme/default/default/template...- так и должно быть /app/design/our_theme/default/template...(на один меньше, я думаю).

Анна Фёлькл
источник