Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Нужна помощь по обработчику

00 голосов
7
Здравствуйте! Взялся за реализацию задачи - добавление темы на форум, при публикации записи в блоге. Использовал обработчик 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 не работают...?
спросил 14 Июль, 13 от Lollipopk (660 баллов)

7 Ответы

00 голосов
Цитата
Олег Іванюк пишет:
function OnPostAddHandler($arFields)
{
.....
$arFields = Array(

жОстко.
ответил 14 Июль, 13 от Ly (4,580 баллов)
00 голосов
Сменил:

Код
function OnPostAddHandler(&$arFields) 
{ 
..... 
$ar = Array(


Не работает...
ответил 31 Авг, 13 от Lollipopk (660 баллов)
00 голосов
Класс почему-то отказывается понимать переменную &$arFields, пробовал и  $arFields - никакого резульата, метод OnPostAddHandler  просто игнорируется.
Без параметров, функция OnPostAddHandler()  работает, но управлять темой форума, я тогда не в силах.

Может кто подскажет что нужно передать фунции OnPostAddHandler() ?
ответил 29 Ноя, 13 от Lollipopk (660 баллов)
00 голосов
function OnPostAddHandler($ID, &$arFields)
ответил 11 Март, 14 от Ly (4,580 баллов)
00 голосов
Спасибо Дима! Работает. А подскажите пожалуйста почему так нужно задавать параметры? Зачем $ID ?Еще раз спасибо! =)
ответил 01 Июль, 14 от Lollipopk (660 баллов)
00 голосов
Если событие не документировано, помогает поиск в теле модуля по слову "ExecuteModuleEvent". Для события OnPostAdd видим следующий код:

Код
$db_events = GetModuleEvents("blog", "OnPostAdd");
while ($arEvent = $db_events->Fetch())
   ExecuteModuleEventEx($arEvent, Array($ID, &$arFields)); 

Понимаем, что в обработчик события передаётся ID поста ($ID) и поля поста ($arFields).
ответил 01 Ноя, 14 от Ly (4,580 баллов)
00 голосов
Цитата
Dmitry Ban пишет:
Если событие не документировано, помогает поиск в теле модуля по слову "ExecuteModuleEvent". Для события OnPostAdd видим следующий код:
Код
 $db_events = GetModuleEvents("blog", "OnPostAdd");
while ($arEvent = $db_events->Fetch())
   ExecuteModuleEventEx($arEvent, Array($ID, &$arFields));  

Понимаем, что в обработчик события передаётся ID поста ($ID) и поля поста ($arFields).
Спасибо! Стало ясно где копать) Если Вас не затруднит, скажите еще таку вещь: допустим я хочу изменить сообщение в блоге, преед его добавлением (в блог), какой обратотчик использовать?

OnAfterPostAdd нету...
ответил 01 Март, 15 от Lollipopk (660 баллов)

Похожие вопросы

0 голосов
8 ответов
спросил 26 Июнь, 13 от Ogyrez (240 баллов)
0 голосов
9 ответов
спросил 11 Май, 13 от Mayuko (240 баллов)
0 голосов
0 ответов
спросил 04 Апр, 14 от Xepo6ouTc (260 баллов)
0 голосов
3 ответов
спросил 18 Март, 14 от Marino (100 баллов)
0 голосов
3 ответов
спросил 04 Март, 14 от Vonki (100 баллов)