Я загружаю свой почтовый шаблон следующим образом:
$mailTemplate = Mage::getModel('core/email_template'); $myTemplate = $mailTemplate->load($templateId);
Теперь я могу получить содержимое шаблона, используя:
$text = $myTemplate ->getData('template_text');
Это работает, но $ text все еще содержит заполнители для переменных, например {{var myvar}} или {{store url = ""}}. Есть ли способ заполнить эти заполнители при загрузке шаблона без отправки почты? Я хочу показать текст пользователю, но с заполненными заполнителями.
Возможное?
Благодаря 🙂
Да, это возможно.
Класс 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);
Надеюсь, кто-то сможет его использовать 😉
С уважением,
Мартейн