Необходимо в уведомления на e-mail о новых комментариях к новости добавить ссылку на детальный просмотр новости.
В качестве места хранения комментариев используется ветка форума.
------
Уведомления отправляются по событию NEW_FORUM_MESSAGE. В почтовом шаблоне доступны по умолчанию следующие переменные:
#FORUM_ID# - ID форума
#FORUM_NAME# - Название форума
#TOPIC_ID# - ID темы
#MESSAGE_ID# - ID сообщения
#TOPIC_TITLE# - Тема сообщения
#MESSAGE_TEXT# - Текст сообщения
#MESSAGE_DATE# - Дата сообщения
#AUTHOR# - Автор сообщения
#RECIPIENT# - Получатель сообщения
#TAPPROVED# - Тема сообщения показывается
#MAPPROVED# - Тело сообщения показывается
#PATH2FORUM# - Адрес сообщения
#FROM_EMAIL# - E-Mail для поля From письма
#DEFAULT_EMAIL_FROM# - E-Mail адрес по умолчанию (устанавливается в настройках)
#SITE_NAME# - Название сайта (устанавливается в настройках)
#SERVER_NAME# - URL сервера (устанавливается в настройках)
Понимаю, что нужно добавить свою переменную, допустим #DETAIL_PAGE_URL#.
Найти нужное событие модуля форум , т.к. создаётся новое сообщение на форуме при написании комментария.
Написать обработчик события в /bitrix/php_interface/init.php и в $arFields инициализировать новую переменную #DETAIL_PAGE_URL#, и она передастся в почтовый шаблон для отправки.
Всё правильно?
------
Подходящие события:
1) onBeforeMessageAdd - перед добавлением сообщения форума.
На событии onBeforeMessageAdd содержимое массива $arFields:
onAfterMessageAdd - после добавления сообщения форума.
На событии onAfterMessageAdd содержимое массива $arFields:
3) onBeforeMailMessageSend - перед отправкой сообщения на почту.
С события onBeforeMailMessageSend в лог ничего не записалось.
------
Далее написал изменение $arFields для события onBeforeMessageAdd в init.php
Что делаю не так?
В качестве места хранения комментариев используется ветка форума.
------
Уведомления отправляются по событию NEW_FORUM_MESSAGE. В почтовом шаблоне доступны по умолчанию следующие переменные:
#FORUM_ID# - ID форума
#FORUM_NAME# - Название форума
#TOPIC_ID# - ID темы
#MESSAGE_ID# - ID сообщения
#TOPIC_TITLE# - Тема сообщения
#MESSAGE_TEXT# - Текст сообщения
#MESSAGE_DATE# - Дата сообщения
#AUTHOR# - Автор сообщения
#RECIPIENT# - Получатель сообщения
#TAPPROVED# - Тема сообщения показывается
#MAPPROVED# - Тело сообщения показывается
#PATH2FORUM# - Адрес сообщения
#FROM_EMAIL# - E-Mail для поля From письма
#DEFAULT_EMAIL_FROM# - E-Mail адрес по умолчанию (устанавливается в настройках)
#SITE_NAME# - Название сайта (устанавливается в настройках)
#SERVER_NAME# - URL сервера (устанавливается в настройках)
Понимаю, что нужно добавить свою переменную, допустим #DETAIL_PAGE_URL#.
Найти нужное событие модуля форум , т.к. создаётся новое сообщение на форуме при написании комментария.
Написать обработчик события в /bitrix/php_interface/init.php и в $arFields инициализировать новую переменную #DETAIL_PAGE_URL#, и она передастся в почтовый шаблон для отправки.
Всё правильно?
------
Подходящие события:
1) onBeforeMessageAdd - перед добавлением сообщения форума.
На событии onBeforeMessageAdd содержимое массива $arFields:
| Код |
|---|
$arFields = Array ( [POST_MESSAGE] => 1000 [USE_SMILES] => Y [APPROVED] => Y [PARAM2] => 161 [AUTHOR_NAME] => admin [AUTHOR_EMAIL] => [AUTHOR_ID] => 40 [FORUM_ID] => 1 [TOPIC_ID] => 30 [AUTHOR_IP] => [AUTHOR_REAL_IP] => [NEW_TOPIC] => N [GUEST_ID] => [POST_MESSAGE_CHECK] => a9b7ba70783b617e9998dc4dd82eb3c5 [SOURCE_ID] => WEB [POST_MESSAGE_FILTER] => 1000 [POST_MESSAGE_HTML] => 1000 ) |
На событии onAfterMessageAdd содержимое массива $arFields:
| Код |
|---|
$arFields = 94 |
С события onBeforeMailMessageSend в лог ничего не записалось.
------
Далее написал изменение $arFields для события onBeforeMessageAdd в init.php
| Код |
|---|
AddEventHandler("forum", "onBeforeMessageAdd", Array("Class1", "onBeforeMessageAddHandler"));
class Class1
{
function onBeforeMessageAddHandler(&$arFields)
{
$arFields["DETAIL_PAGE_URL"] = "my_link1";
AddMessage2Log('$arFields = '.print_r($arFields, true),'');
return $arFields;
}
}
|
Что делаю не так?