Cara membuat header email khusus

18

Saya melihat di email transaksional Templat pesanan baru, ada tag ini yang memanggil file header html yang ada di app/locale/en_US/template/email/html

{{template config_path="design/email/header"}}

Saya ingin membuat header baru sehingga saya membuat file baru app/local/en_US/template/email/html/header2.htmldan menggunakan kode

{{template config_path="design/email/header2"}}

tetapi tidak berhasil. Dengan kode ini, tidak ada tajuk yang disertakan dalam email. Adakah ide mengapa atau apa cara yang tepat untuk membuat tajuk email khusus?

Justin Lok
sumber
1
apakah Anda memiliki header yang ditentukan di bawah jalur konfigurasidesign/email/header2
David Manners
Ya saya lakukan. Saya percaya jalan yang benar adalah. app / local / en_US / template / email / html / header2.html.
Justin Lok

Jawaban:

2

Anda juga dapat menerapkan Magento default kelas untuk bekerja dengan banyak (header dan footer).

Buat file:

app / local / Mage / Adminhtml / Model / Sistem / Config / Sumber / Email / Template.php

<?php
/**
 * Magento
 *
 * NOTICE OF LICENSE
 *
 * This source file is subject to the Open Software License (OSL 3.0)
 * that is bundled with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://opensource.org/licenses/osl-3.0.php
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to [email protected] so we can send you a copy immediately.
 *
 * DISCLAIMER
 *
 * Do not edit or add to this file if you wish to upgrade Magento to newer
 * versions in the future. If you wish to customize Magento for your
 * needs please refer to http://www.magento.com for more information.
 *
 * @category    Mage
 * @package     Mage_Adminhtml
 * @copyright  Copyright (c) 2006-2016 X.commerce, Inc. and affiliates (http://www.magento.com)
 * @license    http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
 */


/**
 * Adminhtml config system template source
 *
 * @category   Mage
 * @package    Mage_Adminhtml
 * @author      Magento Core Team <[email protected]>
 */
class Mage_Adminhtml_Model_System_Config_Source_Email_Template extends Varien_Object
{
    /**
     * Config xpath to email template node
     *
     */
    const XML_PATH_TEMPLATE_EMAIL = 'global/template/email/';

    /**
     * Generate list of email templates
     *
     * @return array
     */
    public function toOptionArray()
    {
        if(!$collection = Mage::registry('config_system_email_template')) {
            $collection = Mage::getResourceModel('core/email_template_collection')
            ->load();

            Mage::register('config_system_email_template', $collection);
        }
        $options = $collection->toOptionArray();
        $templateName = Mage::helper('adminhtml')->__('Default Template from Locale');
        $nodeName = str_replace('/', '_', $this->getPath());

        // Implementation for various templates config.
        $templatesNodes = Mage::app()->getConfig()->getNode('global/template/email');
        if(count($templatesNodes)) {
            foreach($templatesNodes as $nodes) {
                foreach($nodes as $code => $config) {
                    if(strpos($code, $nodeName) !== false) {
                        $templateLabelNode = Mage::app()->getConfig()->getNode(self::XML_PATH_TEMPLATE_EMAIL . $code . '/label');
                        if ($templateLabelNode) {
                            $templateName = Mage::helper('adminhtml')->__((string)$templateLabelNode);
                            $templateName = Mage::helper('adminhtml')->__('%s (Default Template from Locale)', $templateName);
                        }
                        array_unshift(
                            $options,
                            array(
                                'value'=> str_replace('/', '_', $code),
                                'label' => $templateName
                                )
                            );
                    }
                }
            }
        }

        return $options;
    }

}

Kemudian di modul khusus Anda, Anda dapat menggunakan seperti pada contoh berikut di config.xml Anda:

<global>
    <template>
            <email>
                <design_email_header_custom_black translate="label" module="custom_module">
                    <label>Email - Header (CUSTOM BLACK)</label>
                    <file>html/header-custom-black.html</file>
                    <type>text</type>
                </design_email_header_custom_black>
                <design_email_header_custom_white translate="label" module="custom_module">
                    <label>Email - Header (CUSTOM WHITE)</label>
                    <file>html/header-custom-white.html</file>
                    <type>text</type>
                </design_email_header_custom_white>
                <design_email_footer_custom_black translate="label" module="custom_module">
                    <label>Email - Footer (CUSTOM BLACK)</label>
                    <file>html/footer-custom-black.html</file>
                    <type>text</type>
                </design_email_footer_custom_black>
                <design_email_footer_custom_white translate="label" module="custom_module">
                    <label>Email - Footer (CUSTOM WHITE)</label>
                    <file>html/footer-custom-white.html</file>
                    <type>text</type>
                </design_email_footer_custom_white>
            </email>
        </template>
</global>

Jadi Anda memiliki opsi ini untuk dipilih:

Sistem> Konfigurasi> Desain> Email Transaksional

Rafael Ortega Bueno
sumber
1

Ini dapat membantu menjelaskannya:
Gunakan beberapa footer untuk email

Apa yang mereka minta:

Gunakan beberapa footer untuk email

naik suara 1 turun suara favorit Apakah mungkin menggunakan beberapa footer untuk Email Transaksional?

Jadi saya ingin menggunakan catatan kaki khusus untuk email pesanan baru, dan catatan kaki lain untuk email pengiriman.

Saat ini saya memuat footer dengan baris ini: {{template config_path = "design / email / footer"}}

Bagaimana saya bisa memuat templat tertentu dalam email transaksional?

Brennan Casler
sumber
1

design / email / header Ini merujuk ke opsi konfigurasi BUKAN templat.

Anda dapat membuat modul baru untuk menambahkan opsi seperti itu.

<config>
    <sections>
        <design>
            <groups>
                <email>
                    <fields>
                        <header2 translate="label">
                            <label>Email Header Template 2</label>
                            <frontend_type>select</frontend_type>
                            <source_model>adminhtml/system_config_source_email_template</source_model>
                            <sort_order>30</sort_order>
                            <show_in_default>1</show_in_default>
                            <show_in_website>1</show_in_website>
                            <show_in_store>1</show_in_store>
                        </header2>

Atau cukup buat blok statis CMS baru dan kemudian masukkan di atas konten email Anda seperti itu.

{{block type="cms/block" block_id="email-header-sales" }}

Mengganti

{{template config_path="design/email/header"}}
ben.incani
sumber
Saya perlu mengizinkan di cms/blockbawah Sistem -> Izin -> blok
Collin Anderson
1

Anda juga perlu memodifikasi kode app/code/core/Mage/Core/etc/config.xml

<global>
    <template>
            <email>
                <design_email_header translate="label" module="core">
                    <label>Email - Header</label>
                    <file>html/header2.html(your file name)</file>
                    <type>text</type>
                </design_email_header>

Alih-alih melakukan ini di file inti, coba lakukan ini di modul khusus Anda.

Anshu Mishra
sumber