Como: Crear email templates personalizados en Magento 2
En esta página
En el post anterior mostré cómo enviar un email programáticamente, pero dejé una pieza fuera a propósito, la plantilla. Aquí te muestro cómo registro una plantilla de email personalizada que viene con el módulo y que aún así puede ser sobreescrita por el comerciante desde el admin.
app/code/Vendor/Module. Si necesitas saber cómo crear un nuevo módulo, te recomiendo que le eches un vistazo a Cómo crear un nuevo módulo para Magento 2.Registrar la plantilla
Las plantillas que viven en el código se declaran en etc/email_templates.xml. El id es lo que luego pasamos a
setTemplateIdentifier.
<?xml version="1.0"?>
<!-- app/code/Vendor/Module/etc/email_templates.xml -->
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Email:etc/email_templates.xsd">
<template id="vendor_module_email_template"
label="My Custom Email"
file="custom_email.html"
type="html"
module="Vendor_Module"
area="frontend"/>
</config>El archivo de la plantilla
El archivo referenciado arriba va en view/frontend/email/. Usa la misma sintaxis de directivas que cualquier email de
Magento, así que puedes traer variables con {{var ...}} y reutilizar el header y el footer estándar.
<!-- app/code/Vendor/Module/view/frontend/email/custom_email.html -->
<!--@subject My Custom Email Subject @-->
{{template config_path="design/email/header_template"}}
<table>
<tr>
<td>
<p>{{trans "Hi %name," name=$customer_name}}</p>
<p>{{trans "Your order %id has been received and is now being processed." id=$order_id}}</p>
<p>{{trans "Thanks for shopping with us."}}</p>
</td>
</tr>
</table>
{{template config_path="design/email/footer_template"}}@subject en la parte superior define el asunto por defecto, y también acepta variables, por ejemplo <!--@subject Your order {{var order_id}} @-->.Haciéndola editable desde el admin
Como la declaramos en el email_templates.xml, el comerciante puede ir a Marketing > Email Templates, hacer clic en
Add New Template, cargar nuestra plantilla desde el dropdown Template y personalizarla sin tocar el código. Cuando
guarda, Magento usa su versión en lugar de la del archivo.
Ejecuta setup:upgrade, limpia la caché, y la plantilla está lista para ser usada por el servicio de envío del post
anterior.
Espero que esto ayude.
Si tienes alguna pregunta o conoces una mejor manera de lograr esto, siéntete libre de compartir en los comentarios a continuación.
Related links: