Jump to content

Edit History

Julien

Julien

Bonjour à tous,

Habituellement je ne poste pas grand chose et j'essais de me débrouiller mais la j'ai vraiment besoin d'aide. J'ai besoin de créer un template d'email depuis un module sous PrestaShop 1.7.7.

En regardant la documentation développeur j'ai trouver cette solution, en utilisant un hook:

public function hookActionListMailThemes(array $hookParams)
    {
        if (!isset($hookParams['mailThemes'])) {
            return;
        }

        /** @var ThemeCollectionInterface $themes */
        $themes = $hookParams['mailThemes'];

        /** @var ThemeInterface $theme */
        foreach ($themes as $theme) {
            if (!in_array($theme->getName(), ['classic', 'modern'])) {
                continue;
            }
            $theme->getLayouts()->add(new Layout(
                'clictill_template',
                __DIR__ . '/mails/layout/clictill_template.html.twig',
                '',
                $this->name
            ));
        }
    }

Avec un template très simple, juste pour tester que tout fonctionne (monmodule/mails/layout/clictill_template.html.twig):

{# modules/clictill/mails/layout/contact.html.twig #}

{% extends '@MailThemes/classic/components/layout.html.twig' %}

{% block content %}
    <div>
        <p>Test</p>
    </div>
{% endblock %}

Jusque là, je n'ai aucun soucis, mon email s'affiche dans mon panel admin "Apparence > Thème d'email", et je peux le visualiser :

image.png.faa216295c1cf1b1d952f92f7b8516cf.png

 

Mais lorsque j'essais de l'appeler depuis mon code de cette façon: 

Mail::Send(
    (int)(Configuration::get('PS_LANG_DEFAULT')), // defaut language id
    'clictill_template', // email template file to be use
    $title, // email subject
    array(
    '{email}' => Configuration::get('PS_SHOP_EMAIL'), // sender email address
    '{message}' => $listErrorsMessage // email content
    ),
    $email, // receiver email address
    NULL, //receiver name
    NULL, //from email address
    NULL,  //from name
    NULL,
    NULL,
    _PS_MODULE_DIR_.'clictill/mails/'
);

J'ai une erreur "Erreur - Le modèle d'e-mail suivant n'existe pas : clictill_template"... Je cherche depuis plusieurs heures et je ne trouve pas de solution..

Quelqu'un aurait une idée ?

 

Merci d'avance !

Julien

Julien

Julien

Bonjour à tous,

Habituellement je ne poste pas grand chose et j'essais de me débrouiller mais la j'ai vraiment besoin d'aide. J'ai besoin de créer un template d'email depuis un module sous PrestaShop 1.7.7.

En regardant la documentation développeur j'ai trouver cette solution, en utilisant un hook:

public function hookActionListMailThemes(array $hookParams)
    {
        if (!isset($hookParams['mailThemes'])) {
            return;
        }

        /** @var ThemeCollectionInterface $themes */
        $themes = $hookParams['mailThemes'];

        /** @var ThemeInterface $theme */
        foreach ($themes as $theme) {
            if (!in_array($theme->getName(), ['classic', 'modern'])) {
                continue;
            }
            $theme->getLayouts()->add(new Layout(
                'clictill_template',
                __DIR__ . '/mails/layout/clictill_template.html.twig',
                '',
                $this->name
            ));
        }
    }

Avec un template très simple, juste pour tester que tout fonctionne (monmodule/mails/layout/clictill_template.html.twig):

{# modules/clictill/mails/layout/contact.html.twig #}

{% extends '@MailThemes/classic/components/layout.html.twig' %}

{% block content %}
    <div>
        <p>Test</p>
    </div>
{% endblock %}

Jusque là, je n'ai aucun soucis, mon email s'affiche dans mon panel admin "Apparence > Thème d'email", et je peux le visualiser :

image.png.faa216295c1cf1b1d952f92f7b8516cf.png

 

Mais lorsque j'essais de l'appeler depuis mon code de cette façon: 

Mail::Send(
    (int)(Configuration::get('PS_LANG_DEFAULT')), // defaut language id
    'clictill_template', // email template file to be use
    $title, // email subject
    array(
    '{email}' => Configuration::get('PS_SHOP_EMAIL'), // sender email address
    '{message}' => $listErrorsMessage // email content
    ),
    $email, // receiver email address
    NULL, //receiver name
    NULL, //from email address
    NULL,  //from name
    NULL,
    NULL,
    _PS_MODULE_DIR_.'clictill/mails/'
);

J'ai une erreur "Erreur - Le modèle d'e-mail suivant n'existe pas : clictill_template"... Je cherche depuis plusieurs heures et je ne trouve pas de solution..

Quelqu'un aurait une idée ?

 

Merci d'avance !

Julien

×
×
  • Create New...