Correo electrónico transaccional: cómo plantilla 'sales_email_order_items' (o cómo anular la plantilla adminhtml)

15

En el código de correo electrónico transaccional, veo esto:

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

Lo cual, creo, se refiere a este archivo de plantilla:

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

Intenté crear una nueva carpeta con nuestro tema para evitar sobrescribir los archivos principales:

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

Pero esto no parece funcionar, ¿hay una manera adecuada de anular este archivo sin simplemente sobrescribir el núcleo?

waffl
fuente

Respuestas:

20

En realidad, se refiere a un controlador XML de diseño que puede encontrar en el sales.xmlarchivo alrededor de la línea 268.

Allí puedes encontrar las siguientes etiquetas

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

Puede copiar esto a sus propios temas local.xmly editar lo que necesite. En su caso, restablecería el archivo de plantilla de la siguiente manera: -

<sales_email_order_items>
    <reference name="items">
        <action method="setTemplate">
            <template>yourdirectory/order/items.phtml</template>
        </action>
    </reference>
</sales_email_order_items>
Sander Mangel
fuente
Vaya, tienes toda la razón. ¡Gracias! Aceptará cuando sea posible :)
waffl
No hay problema, puede ser algo confuso :)
Sander Mangel
@SanderMangel ¿Cómo puedo crear {{layout handle = "sales_email_order_items" order = $ order}} que no sea el predeterminado, que usaré en las plantillas de correo electrónico (que no sea la plantilla de correo electrónico de confirmación del pedido)
Mukesh
No estoy seguro de lo que quieres decir, pero puedes llamar a cualquier identificador desde el local.xml desde tu plantilla de correo electrónico. Para que pueda crear uno nuevo si lo desea
Sander Mangel
6

Puede ver a qué plantilla se refiere "sales_email_order_items" cuando busca

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

En, app/design/frontend/base/default/layout/sales.xmlpor ejemplo, 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>

Aquí puedes encontrar el camino: template="email/order/items.phtml"

La estructura de su directorio /app/design/our_theme/default/default/template/email/order/items.phtmlparece incorrecta, especialmente la parte /app/design/our_theme/default/default/template..., debería serlo /app/design/our_theme/default/template...(uno predeterminado menos, supongo).

Anna Völkl
fuente