Загрузка шаблона почты Magento и заполнение его варов из кода?

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

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

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

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

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

Возможное?

Благодаря 🙂

Solutions Collecting From Web of "Загрузка шаблона почты Magento и заполнение его варов из кода?"

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

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

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

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

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

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

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

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

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

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

С уважением,

Мартейн