Здравствуйте! Взялся за реализацию задачи - добавление темы на форум, при публикации записи в блоге. Использовал обработчик OnPostAdd для блогов
Пишу такой код:
Код
AddEventHandler("blog", "OnPostAdd", Array("MyClasss", "OnPostAddHandler"));
class MyClasss
{
function OnPostAddHandler($arFields)
{
if (CModule::IncludeModule('forum'))
{
// do something;
}
$arFields = Array(
"FORUM_ID" => 29,
"TITLE" => "тут нужно вписать заголовок сообщения в блоге, как?",
"USER_START_NAME" => "admin",
"STATE" => "Y",
"START_DATE" => ConvertTimeStamp(),
"APPROVED" => "Y",
"LAST_POSTER_NAME" => "Y"
);
CForumTopic::Add($arFields);
}
}
Вопрос: что нужно передать фунции OnPostAddHandler чтобы в название темы ("TITLE" можно было вписать заголовок сообщения в блоге. Массивы $arFields и &$arFields не работают...?
Класс почему-то отказывается понимать переменную &$arFields, пробовал и $arFields - никакого резульата, метод OnPostAddHandler просто игнорируется. Без параметров, функция OnPostAddHandler() работает, но управлять темой форума, я тогда не в силах.
Может кто подскажет что нужно передать фунции OnPostAddHandler() ?
Dmitry Ban пишет: Если событие не документировано, помогает поиск в теле модуля по слову "ExecuteModuleEvent". Для события OnPostAdd видим следующий код:
Понимаем, что в обработчик события передаётся ID поста ($ID) и поля поста ($arFields).
Спасибо! Стало ясно где копать) Если Вас не затруднит, скажите еще таку вещь: допустим я хочу изменить сообщение в блоге, преед его добавлением (в блог), какой обратотчик использовать?
Предполагаем, что нужное событие должно начинаться с OnBefore. В /bitrix/modules/blog/mysql/blog_post.php видим события OnBeforePostAdd и OnBeforePostUpdate. Массив полей $arFields передаётся в эти обработчики по ссылке. Это означает, что вы можете поменять поля $arFields в обработчике событий до того, как они будут записаны в базу.
AddEventHandler("blog", "OnBeforePostAdd", Array("PostUp", "OnBeforePostAddHandler"));
class PostUp
{
function OnBeforePostAddHandler($ID, &$arFields)
{
$arFields["DETAIL_TEXT"]="нужное сообщение";
}
}