2012-05-11 18 views
9

He creado una plantilla de correo electrónico para un módulo personalizado, coloqué el archivo en app/locale/en_US/template/email y lo configuré en mi archivo XML de configuración de módulo. Ahora quiero recuperar esa plantilla en un controlador a través del código. He tratado:Magento obtener plantilla de correo electrónico por código

$emailTemplate = Mage::getModel('core/email_template')->loadByCode('custom_template'); 

pero devuelve una plantilla NULL de correo electrónico. La configuración de mi plantilla de correo electrónico del módulo es:

<global> 
    <template> 
     <email> 
      <custom_template> 
       <label>Some custom email template</label> 
       <file>custom_template.html</file> 
       <type>html</type> 
      </custom_template> 
     </email> 
    </template> 
</global> 

¿Qué me falta?

** ** Editar

he encontrado this código, pero la línea

$template_collection = Mage::getResourceSingleton('core/email_template_collection'); 

devuelve una colección vacía. Traté de buscar en la fuente de administración de Magento y encontré Mage_Adminhtml_Block_System_Email_Template_Grid que también usa la misma línea para obtener una colección y, aparentemente, funciona para Magento, pero no con mi código. ¿Por qué?

Respuesta

16

El PHP se registró

$emailTemplate = Mage::getModel('core/email_template')->loadByCode('custom_template'); 

va a cargar una plantilla de correo electrónico de la base de datos de. Específicamente, de la tabla core_email_template. La plantilla que ha colocado en el sistema de archivos es la plantilla predeterminada. Debería poder cargarlo usando el método loadDefault.

$emailTemplate = Mage::getModel('core/email_template')->loadDefault('custom_template'); 
+2

¡usted lo clavó totalmente! ¡Gracias! –

+0

Gracias u Alan ... –

4

Si alguien está buscando código de ejemplo completo de cómo enviar un correo electrónico Magento basado en una plantilla de correo electrónico Magento existente, el siguiente funciona bien. No requiere ninguna configuración XML.

// This is the name that you gave to the template in System -> Transactional Emails 
$emailTemplate = Mage::getModel('core/email_template')->loadByCode('My Custom Email Template'); 

// These variables can be used in the template file by doing {{ var some_custom_variable }} 
$emailTemplateVariables = array(
'some_custom_variable' => 'Hello World' 
); 

$processedTemplate = $emailTemplate->getProcessedTemplate($emailTemplateVariables); 

$emailTemplate->setSenderName('Joe Bloggs'); 
$emailTemplate->setSenderEmail('[email protected]'); 
$emailTemplate->setTemplateSubject("Here is your subject"); 

$emailTemplate->send('[email protected]', 'Joanna Bloggs', $emailTemplateVariables); 
Cuestiones relacionadas