Email transacional: como modelo 'sales_email_order_items' (ou como substituir o modelo adminhtml)

15

No código de email transacional, vejo o seguinte:

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

Que, acredito, se refere a este arquivo de modelo:

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

Tentei criar uma nova pasta com o nosso tema para evitar a substituição de arquivos principais:

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

Mas isso não parece funcionar, existe uma maneira adequada de substituir esse arquivo sem simplesmente substituir o núcleo?

waffl
fonte

Respostas:

20

Na verdade, refere-se a um identificador XML de layout que você pode encontrar no sales.xmlarquivo em torno da linha 268.

Lá você pode encontrar as seguintes tags

<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>

Você pode copiar isso para seus próprios temas local.xmle editar o que precisar. No seu caso, seria redefinir o arquivo de modelo da seguinte maneira: -

<sales_email_order_items>
    <reference name="items">
        <action method="setTemplate">
            <template>yourdirectory/order/items.phtml</template>
        </action>
    </reference>
</sales_email_order_items>
Sander Mangel
fonte
Opa, você está totalmente certo. Obrigado! Aceitará quando possível :) #
0313
Não tem problema, ele pode ser um pouco confuso :)
Sander Mangel
@SanderMangel Como posso criar {{layout handle = "sales_email_order_items" order = $ order}} diferente do padrão, que usarei nos modelos de email (que não seja o modelo de email de confirmação do pedido)
Mukesh
Não sei o que você quer dizer, mas você pode chamar qualquer identificador do local.xml do seu modelo de email. Assim, você pode criar um novo, se quiser #
Sander Mangel
6

Você pode ver qual modelo "sales_email_order_items" se refere ao pesquisar

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

Por app/design/frontend/base/default/layout/sales.xmlexemplo, você verá:

<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>

Aqui você pode descobrir o caminho: template="email/order/items.phtml"

Sua estrutura de diretórios /app/design/our_theme/default/default/template/email/order/items.phtmlparece errada, especialmente a parte /app/design/our_theme/default/default/template...- deveria estar /app/design/our_theme/default/template...(um padrão a menos, eu acho).

Anna Völkl
fonte