Cómo crear un encabezado de correo electrónico personalizado

18

Veo en el correo electrónico transaccional Nueva plantilla de pedido, existe esta etiqueta que llama al archivo html de encabezado que está en app/locale/en_US/template/email/html

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

Deseo crear un nuevo encabezado, así que creé un nuevo archivo app/local/en_US/template/email/html/header2.htmly uso el código

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

Pero no funciona. Con este código, no se incluye encabezado en el correo electrónico. ¿Alguna idea de por qué o cuál es la forma correcta de crear un encabezado de correo electrónico personalizado?

Justin Lok
fuente
1
¿tiene un encabezado definido en la ruta de configuracióndesign/email/header2
David Manners
Sí. Creo que el camino correcto es. app / local / en_US / template / email / html / header2.html.
Justin Lok

Respuestas:

2

También puede implementar la clase predeterminada Magento para trabajar con múltiples (encabezados y pies de página).

Crea un archivo:

app / local / Mage / Adminhtml / Model / System / Config / Source / 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;
    }

}

Luego, en su módulo personalizado, puede usar como en el siguiente ejemplo en su config.xml:

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

Entonces tiene estas opciones para seleccionar:

Sistema> Configuración> Diseño> Correo electrónico transaccional

Rafael Ortega Bueno
fuente
1

Esto puede ayudar a explicarlo:
use varios pies de página para el correo electrónico

.

Use múltiples pies de página para el correo electrónico

arriba votar 1 abajo votar favorito ¿Es posible usar múltiples pies de página para los correos electrónicos transaccionales?

Por lo tanto, quiero usar un pie de página específico para un nuevo correo electrónico de pedido y otro pie de página para el correo electrónico de envío.

Actualmente cargo el pie de página con esta línea: {{template config_path = "design / email / footer"}}

¿Cómo puedo cargar una plantilla específica en el correo electrónico transaccional?

Brennan Casler
fuente
1

diseño / correo electrónico / encabezado Esto se refiere a la opción de configuración NO a la plantilla.

Podría crear un nuevo módulo para agregar la opción así.

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

Alternativamente, solo cree un nuevo bloque estático CMS y luego insértelo en la parte superior del contenido de su correo electrónico de esta manera.

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

Sustitución

{{template config_path="design/email/header"}}
ben.incani
fuente
Necesitaba permitir cms/blocken Sistema -> Permisos -> bloques
Collin Anderson
1

También necesitas modificar el código en 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>

En lugar de hacer esto en el archivo principal, intente hacerlo en su módulo personalizado.

Anshu Mishra
fuente