Comment créer un en-tête d'e-mail personnalisé


18

Je vois dans l'e-mail transactionnel Nouveau modèle de commande, il y a cette balise qui appelle le fichier html d'en-tête qui est en app/locale/en_US/template/email/html

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

Je souhaite créer un nouvel en-tête, j'ai donc créé un nouveau fichier app/local/en_US/template/email/html/header2.htmlet utilisé du code

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

mais ça ne marche pas. Avec ce code, aucun en-tête n'est inclus dans l'e-mail. Des idées pourquoi ou quelle est la bonne façon de créer un en-tête d'e-mail personnalisé?


1
avez-vous un en-tête défini sous le chemin de configurationdesign/email/header2
David Manners

Oui. Je crois que le bon chemin est. app / local / en_US / template / email / html / header2.html.
Justin Lok

Réponses:


2

Vous pouvez également implémenter la classe Magento par défaut pour travailler avec plusieurs (en-têtes et pieds de page).

Créer un fichier:

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 license@magento.com 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 <core@magentocommerce.com>
 */
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;
    }

}

Ensuite, dans votre module personnalisé, vous pouvez utiliser comme dans l'exemple suivant dans votre 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>

Vous avez donc ces options parmi lesquelles choisir:

Système> Configuration> Conception> E-mail transactionnel


1

Cela peut aider à l'expliquer:
utilisez plusieurs pieds de page pour les courriels

Ce qu'ils demandent:

Utiliser plusieurs pieds de page pour les e-mails

up vote 1 down vote favorite Est-il possible d'utiliser plusieurs pieds de page pour les e-mails transactionnels?

Je souhaite donc utiliser un pied de page spécifique pour un nouvel e-mail de commande et un autre pied de page pour l'e-mail d'expédition.

Je charge actuellement le pied de page avec cette ligne: {{template config_path = "design / email / footer"}}

Comment puis-je charger un modèle spécifique dans l'e-mail transactionnel?


1

design / email / header Ceci fait référence à l'option de configuration PAS au modèle.

Vous pouvez créer un nouveau module pour ajouter l'option ainsi.

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

Sinon, créez simplement un nouveau bloc statique CMS, puis insérez-le au-dessus de votre contenu de messagerie comme ceci.

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

Remplacement.

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

Je devais autoriser cms/blocksous Système -> Autorisations -> blocs
Collin Anderson

1

Vous devez également modifier le code dans 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>

Au lieu de le faire dans le fichier core, essayez de le faire dans votre module personnalisé.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.