4

我正在加载我的邮件模板,如下所示:

$mailTemplate = Mage::getModel('core/email_template');
$myTemplate = $mailTemplate->load($templateId);

现在我可以使用以下方法获取模板内容:

$text = $myTemplate ->getData('template_text');

这可行,但$text仍然包含变量的占位符,例如 {{var myvar}} 或 {{store url=""}}。有没有办法在加载模板而不发送邮件时填充这些占位符?我想向用户显示文本,但填充占位符。

可能的?

谢谢 :)

4

2 回答 2

8

是的,这是可能的。

该类Mage_Core_Model_Email_Template有一个方法getProcessedTemplate()。您只需要为您的占位符传递适当的变量。

例如,如果您的模板包含这样的占位符:

{{var firstname}} {{var lastname}}

您可以使用:

$sTemplate = Mage::getModel('core/email_template')
    ->load($templateId)
    ->getProcessedTemplate(array(
        'firstname' => 'John',
        'lastname' => 'Doe'
    ));

让你的占位符得到解决。

于 2012-01-26T16:32:48.883 回答
2

要加载电子邮件模板并用变量填充它,您可以执行以下操作:

    $emailTemplate  = Mage::getModel('core/email_template')
                            ->loadDefault('<your_email_template>');  

    //create template variables        
    $emailTemplateVariables                 = array();
    $emailTemplateVariables['firstname']    = <firstname_var>;
    $emailTemplateVariables['lastname']     = <lastname_var>;
    // in your tample tou can use {var firstname} and {var lastname}

    //fill template variables in email template
    $processedTemplate              = $emailTemplate->getProcessedTemplate($emailTemplateVariables);

    $emailTemplate->setSenderName('<name>');
    $emailTemplate->setSenderEmail('<emailaddress>');
    $emailTemplate->setTemplateSubject($this->__('<your subject>'));

    //send mail
    $emailTemplate->send(<receiver_emailaddress>, <receiver_name>, $emailTemplateVariables); 

希望有人可以使用它;-)

亲切的问候,

马汀

于 2013-09-20T09:21:42.950 回答