Skip to content
butschster edited this page Mar 25, 2014 · 2 revisions

Типы почтовых событий

Модуль почтовых событий в KodiCMS позволяет не ограничиваться стандартными системными уведомлениями по email, а создавать свои типы событий и использовать их при разработке модулей или плагинов.

Принцип работы модуля прост, к каждому почтовому событию можно прикрепить любое кол-во почтовых шаблонов. При вызове почтового события в него передается массив значений с ключами, которые передаются в связанные почтовые шаблоны, подстановка в почтовые шаблоны этих значений и отправка адресату.

  1. Создается новый тип почтового события, главным параметром является код события, он должен быть уникальным и будет использоваться при вызове этого события в своем коде.
  2. Указываются названия полей, которые это событие будет передавать в почтовый шаблон. Эти поля в основном используются только в почтовых шаблонах для удобного заполнения полей.

Например, создаем тип события новостной рассылки

И почтовый шаблоно для него

Обратите внимание в почтовом шаблоне мы используем те поля, которые были добавлены в почтовом событии в фигурных скобках, в последствии они будут заменены на те значения, что будут переданы в момент вызова почтового события.

Для вызова почтового события в своем модуле, плагине и т.д. необходимо вставить PHP код

// Параметры новости, на которые в шаблоне будут заменены теги в фигурных скобках
$post_data = array(
	'header' => 'Наша первая новость',
	'description' => 'Описание нашей первой новости',
	'link' => '/news/2.html',
	'date_created' => '1 января 2014г.'
);

// 'news_mailing' - Код события
Email_Type::get('news_mailing')->send( array $post_data );

Создание почтового события из кода.

$email_type = ORM::factory('email_type', array('code' => 'email_type_code'));

if( ! $email_type->loaded())
{
	$email_type
		->values(array(
			'code' => 'email_type_code', // Код события
			'name' => 'Почтовое событие' // Название события
		))
		->create();
}

$email_type_fields = array(
	'header' => 'Заголовк',
	'desription' => 'Описание',
	'....'	=> '...',
	...
);

$email_type
	->set('data', $email_type_fields)
	->update();