Email transaksional: Cara membuat templat 'sales_email_order_items' (atau cara mengganti templat adminhtml)

15

Dalam kode email transaksional, saya melihat ini:

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

Yang, saya percaya, merujuk ke file templat ini:

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

Saya sudah mencoba membuat folder baru dengan tema kami untuk menghindari menimpa file inti:

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

Tapi ini sepertinya tidak berhasil, adakah cara yang tepat untuk mengganti file ini tanpa hanya menimpa inti?

wafel
sumber

Jawaban:

20

Sebenarnya ini mengacu pada pegangan Layout XML yang dapat Anda temukan di sales.xmlfile sekitar baris 268.

Di sana Anda dapat menemukan tag berikut

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

Anda dapat menyalin ini ke tema Anda sendiri local.xmldan mengedit apa pun yang Anda butuhkan. Dalam kasus Anda, itu akan mengatur ulang file template seperti: -

<sales_email_order_items>
    <reference name="items">
        <action method="setTemplate">
            <template>yourdirectory/order/items.phtml</template>
        </action>
    </reference>
</sales_email_order_items>
Sander Mangel
sumber
Ups, Anda sepenuhnya benar. Terima kasih! Akan menerima bila memungkinkan :)
waffl
Tidak masalah, bisa jadi agak membingungkan :)
Sander Mangel
@SanderMangel Bagaimana saya bisa membuat {{layout handle = "sales_email_order_items" order = $ order}} selain default, yang akan saya gunakan dalam templat email (Selain templat email konfirmasi pesanan)
Mukesh
Saya tidak yakin apa yang Anda maksud tetapi Anda dapat memanggil pegangan apa pun dari local.xml dari templat email Anda. Jadi, Anda dapat membuat yang baru jika Anda mau
Sander Mangel
6

Anda dapat melihat templat mana yang "dirujuk oleh sales_email_order_items" saat melihatnya

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

Sebagai app/design/frontend/base/default/layout/sales.xmlcontoh, Anda akan melihat:

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

Di sini Anda dapat menemukan jalannya: template="email/order/items.phtml"

Struktur direktori Anda /app/design/our_theme/default/default/template/email/order/items.phtmltampaknya salah, terutama bagian /app/design/our_theme/default/default/template...- seharusnya /app/design/our_theme/default/template...(salah satu kurang standar, kurasa).

Anna Völkl
sumber