Все письмо можно разделить на три части: хэдер, содержательная (контентная) часть и футер.
Для рассылок типа «подписка на раздел» содержательная часть будет повторяться для каждого объекта, вошедшего в рассылку для пользователя.
Во всех частях письма можно использовать следующие переменные:
Переменная | Описание |
---|---|
$current_user | массив с параметрами пользователя, которому отправляется письмо |
$mailer | массив с информацией о рассылке |
$current_catalogue, $current_sub, $current_cc | используются для подписки на раздел |
$classID | номер компонента (для подписок на раздел) |
%USER_LOGIN% | логин пользователя |
%LINK% | ссылка для отказа от рассылки |
%SUB_LINK% | ссылка на страницу управления подписками; для незарегистрированных пользователей содержит хэш для входа в раздел управления подписками |
%SUB_LINK_WITH_AUTH_HASH% | ссылка на страницу управления подписками с хэшем для входа в систему (для всех пользователей); доступно с версии 5.6.0.16040 |
Допустим, пользователь подписан на рассылку «Новости» с периодичностью 2 часа, и за эти два часа администратор добавил три новости, тогда письмо для этого пользователя схематично будет выглядеть так:
Хэдер Контентная часть для 1-ой новости Контентная часть для 2-ой новости Контентная часть для 3-ой новости Футер
Для регулярных и сервисных рассылок схема письма такая:
Хэдер Контентная часть Футер
Для рассылок типа «серийная рассылка» содержательная часть будет соответствовать объекту урока который должен получить подписчик.
Допустим, пользователь уже получил три урока, следующе письмо будет содержать:
Хэдер Контентная часть для 4-го урока Футер
В шаблонах писем через определённые переменные доступна информация о пользователе, сайте, разделе, компоненте в разделе и объектах.
Шаблоны писем (хэдер, содержательная часть, футер) — это php строка, вставка функций и кода выполняется соответствующе (синтаксис v4).
Для вставки функций можно воспользоваться следующей конструкцией:
html-код ".some_function()." html-код
Возвращаемое значение этой функции войдет в письмо.
Для вставки php-кода можно применить следующую схему:
HTML-код "; php-код $result .= "
Если в шаблоне отсутствует использование массива $current_user, то обработка будет производиться только один раз для всех пользователей.
Для выполнения условий, получение хэдера, футера и содержательной части письма каждый раз вызывается функция, поэтому переменные, объявленные в, допустим, условие рассылки недоступны в футере письма. Чтобы все-таки передавать между ними некоторые значения, можно воспользоваться заранее определённым статическим массивом $static_vars.
Например, в условие рассылки пишем:
$static_vars['my_var'] = 123;
тогда в футере будет доступен элемент массива $static_vars['my_var'] со значением 123.
Примеры использования:
Новый ответ на форуме ".$current_sub['Subdivision_Name']."
Письмо для ".$current_user['Name']."
В верхней и нижних частях используются те же переменные, что и в теме.
Пример использования. В футере добавить ссылку для отписки:
Надоело получать рассылку? Вы можете <a href='%LINK%'>отписаться</a>.
В основной части письма добавляется ряд новых переменных
Переменная | Описание |
---|---|
$f_RowID | номер объекта |
$f_UserID | номер пользователя, добавившего объект |
$f_ИмяПоля | значение поля объекта |
Использование $f_ИмяПоля аналогично использованию такой же переменной в компонентах. Допустим есть рассылка новостей, а в компоненте «Новости» используются поля Title (для заголовка), Announce (для анонса). В этом случае шаблон для основной части может выглядить так:
<h2><a href='".nc_message_link( $f_RowID, $classID )."'>".$f_Title."</a></h2> <p>".$f_Announce."</p>
Список переменных, которые нельзя переопределять в условиях и шаблонах рассылок:
Комментарии 3
$f_Picture
приводит к неправильному результату:
xsscleaned="nc_row_img" всем.jpg:image="" jpeg:7598:115="" 134="" skidki_vsem.jpg'=""
думаю с мультизагрузкой тоже не пойдет, позже посмотрю.
[CODE]
";
$pic = explode(":",$f_Picture);
$result .= "
<img src='http://".$current_catalogue['Domain']."/netcat_files/".$pic[3]."' />
[/CODE]
$f_LastUserID номер пользователя, изменившего объект?
И еще неплохо бы написать, как этими переменными $f_UserID, $f_LastUserID пользоваться для того, чтобы вытянуть информацию о пользователе.
[QUOTE]$db->get_var("SELECT `Login` FROM `User` WHERE `User_ID` = '".$f_LastUserID."' ");[/QUOTE]