我已经为自定义模块创建了一个电子邮件模板,将该文件放入app/locale/en_US/template/email我的模块配置XML文件中并对其进行配置.现在我想通过代码在控制器中检索该模板.我试过了 :
$emailTemplate = Mage::getModel('core/email_template')->loadByCode('custom_template');
Run Code Online (Sandbox Code Playgroud)
但它返回一个NULL电子邮件模板.我的模块电子邮件模板配置是:
<global>
<template>
<email>
<custom_template>
<label>Some custom email template</label>
<file>custom_template.html</file>
<type>html</type>
</custom_template>
</email>
</template>
</global>
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
**编辑**
我找到了这个代码,但行
$template_collection = Mage::getResourceSingleton('core/email_template_collection');
Run Code Online (Sandbox Code Playgroud)
返回一个空集合.我试着调查Magento的管理源,并发现Mage_Adminhtml_Block_System_Email_Template_Grid哪个也使用相同的行来获取一个集合,显然,它适用于Magento,但不适用于我的代码.为什么?
Ala*_*orm 20
你发布的PHP
$emailTemplate = Mage::getModel('core/email_template')->loadByCode('custom_template');
Run Code Online (Sandbox Code Playgroud)
将从数据库加载电子邮件模板.具体来说,从core_email_template表中.您放在文件系统上的模板是默认模板.您应该能够使用该loadDefault方法加载它.
$emailTemplate = Mage::getModel('core/email_template')->loadDefault('custom_template');
Run Code Online (Sandbox Code Playgroud)
如果有人正在寻找基于现有Magento电子邮件模板发送Magento电子邮件的完整示例代码,则以下情况很有效.它不需要任何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('test@test.com');
$emailTemplate->setTemplateSubject("Here is your subject");
$emailTemplate->send('recipient@test.com', 'Joanna Bloggs', $emailTemplateVariables);
Run Code Online (Sandbox Code Playgroud)