У Joomla 5 з’явилися email-шаблони, які налаштовуються, як системні, так і сторонніх компонентів. Їх не можна (поки що) додати самостійно, вони додаються розширеннями при встановленні. Але їх можна відредагувати в Система -> Шаблони -> Шаблони листів. У налаштуваннях шаблоних листів (кнопка налаштувань компонента у верхньому правому куті) ми вибираємо формат листів тексту або HTML. Тоді стають доступними параметри макетів шаблонів листів Joomla. Ці глобальні параметри можна перевизначити у кожному конкретному email-шаблоні. Таким чином, для кожного з email-шаблонів можна вказати свою верстку та налаштування логотипу.
Як додати свої змінні для e-mail шаблонів Joomla?
Корисні виявляться 2 тригери для плагінів: onMailBeforeTagsRendering та onMailBeforeRendering.
onMailBeforeRendering - тригер, який дозволяє додавати свої шорт-коди для рядкової заміни в плагіні. Віддати туди треба масив виду [ variable_name => variable_value ]. З адмінки свої змінні потрібно додавати вже з фігурними дужками: {variable_name} заміниться variable_value. Аргументом $event плагіна є екземпляр класу BeforeRenderingMailTemplateEvent, в якому є крім інших 2 методи: getTemplate() (отримання об’єкта мейлера, куди можна додавати свої дані) і getTemplateId() (отримання id шаблону листа виду com_users.registration. за яким ми визначаємо чи потрібний це для нас email-шаблон чи ні. Аналогічно контексту у контент-плагінах.
Також корисна властивість класу для передачі даних з плагіна в лейаут листи для рендеру - $layoutTemplateData. Це асоціативний масив.
// Отримуємо поточний мейлер
$mailTemplate = $event->getTemplate();
$ data = [
'variable_name' => 'variable_value'
];
// з Joomla 4 всім типів листів. 2-й аргумент – plain – текстовий формат листа
$mailTemplate->addTemplateData($data, false);
// з Joomla 5.2 - для HTML-листів
$mailTemplate->addLayoutTemplateData($data);
// приклад з ядра Joomla
// Add additional data to the layout template
$this->addLayoutTemplateData([
'siteName' => $app->get('sitename'),
'lang' => substr($this->language, 0, 2),
]);
onMailBeforeTagsRendering - тригер, який додає ваші змінні до списку доступних змінних для заміни у вікні редагування email шаблону Joomla. Віддати туди потрібно той самий масив, який віддавали в попередньому тригері.
- за правильність коду не несу відповідальності, т.к. статтю скопійовано та перекладено
А Ви користуєтесь email-шаблонами?