Загрузка почтового шаблона Magento и заполнение его переменных из кода? - PullRequest
4 голосов
/ 26 января 2012

Я загружаю свой почтовый шаблон так:

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

Теперь я могу получить содержимое шаблона, используя:

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

Это работает, но $ text по-прежнему содержит заполнители для переменных, например {{var myvar}} или {{store url = ""}}.Есть ли способ заполнить эти заполнители при загрузке шаблона без отправки почты?Я хочу показать текст пользователю, но с заполненными заполнителями.

Возможно?

Спасибо:)

Ответы [ 2 ]

7 голосов
/ 26 января 2012

Да, это возможно.

У класса Mage_Core_Model_Email_Template есть метод getProcessedTemplate().Вам нужно только передать соответствующие переменные для ваших заполнителей.

Например, если ваш шаблон содержит заполнители, такие как:

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

, вы можете использовать:

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

, чтобы решить ваши заполнители.

2 голосов
/ 20 сентября 2013

Чтобы загрузить шаблон электронной почты и заполнить его переменными, вы можете сделать следующее:

    $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); 

Надеюсь, кто-то может использовать его; -)

С уважением,

Мартейн

...