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

Проблема с обработкой событий

00 голосов
5
Здравствуйте у меня возникла проблема такого плана
Мне необходимо при создании нового элемента инфоблоков (новости) чтобы создавался новый пост в блоге.
Я в файле init.php создал следующий обработчик события
Код
<?

AddEventHandler("iblock", "OnBeforeIBlockElementAdd", Array("MyClass", "OnBeforeIBlockElementAddHandler"));

class MyClass
{
    function OnBeforeIBlockElementAddHandler()
    {

    CBlogPost::Add($arFields= array ("TITLE"=>'новый пост',"BLOG_ID"=>1));

    }
}
?>


в функцию добавления нового поста в блоге я передаю ID блога чтобы указать в каком блоге создать сообщение и название сообщения

и при создании нового элемента информационного блока (новости) мне выводиться сообщение об ошибке

Цитата

Ошибка
Не указано название блога латиницей


Так же я пытался при создании нового элемента информационных блоков обрабатывать событие таким образом что бы создавался новый блог и в файле init.php вводил следующий код

Код

<?

AddEventHandler("iblock", "OnBeforeIBlockElementAdd", Array("MyClass", "OnBeforeIBlockElementAddHandler"));
class MyClass
{
    
    function OnBeforeIBlockElementAddHandler()
    {

    CBlog::Add($arFields = array ("NAME"=>'новый блог',"URL"=>'ADMIN'));

    }
}
?>


В данном случае я вводил имя и адрес блога так как они являются обязательными параметрами для создания блога

Ошибка выводится так же самая
Цитата

Ошибка
Не указано название блога латиницей


Создаётся такое впечатление, что в функцию не передаются параметры я не знаю в чём дело помогите, пожалуйста.
спросил 21 Ноя, 13 от MAZA (100 баллов)

5 Ответы

00 голосов
Цитата
Александр Юртаев пишет:
CBlogPost::Add($arFields= array ("TITLE"=>'новый пост',"BLOG_ID"=>1));

Это меня смущает очень.
Попробуйте
Цитата
CBlogPost::Add(array("TITLE"=>'новый пост',"BLOG_ID"=>1, "AUTHOR_ID" => $USER->GetID));
ответил 11 Янв, 14 от Almarea (3,760 баллов)
00 голосов
Цитата

Попробуйте
Цитата

CBlogPost::Add(array("TITLE"=>'новый пост',"BLOG_ID"=>1, "AUTHOR_ID" => $USER->GetID));


Я попробовал и результат тот же
Цитата

Ошибка
Не указано название блога латиницей
ответил 28 Апр, 14 от MAZA (100 баллов)
00 голосов
Подключите класс блогов, и передайте в функцию $arFields.

Код
AddEventHandler("iblock", "OnBeforeIBlockElementAdd", Array("MyClass", "OnBeforeIBlockElementAddHandler")); 
class MyClass 
{ 
    function OnBeforeIBlockElementAddHandler($arFields) 
    {
     if (CModule::IncludeModule("blog"))
     {
      CBlog::Add($arFields = array ("NAME"=>'новый блог',"URL"=>'ADMIN')); 
     }
     else
     {
      echo "Модуль блогов не подключен!";
     }
    } 
}
ответил 24 Авг, 14 от Perfekt (220 баллов)
00 голосов
Я попробовал, ошибка исчезла но при созадании обработчика на такое событие загружается пустая страница после попытки создания новости

Цитата
OnBeforeIBlockElementAdd


тогда я попробовал поставить обработчик на событие после создание новости то есть вот это
Цитата
OnAfterIBlockElementAdd

и новость стала создаваться а вот новый блог с задаваемым именем так и не появился :(
ответил 29 Дек, 14 от MAZA (100 баллов)
00 голосов
Что за "пустая страница"? Всмысле белая?
поставьте в dbconn.php переменную $dbDebug = true и посмотрите что за ошибка.
ответил 17 Апр, 15 от Perfekt (220 баллов)

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

0 голосов
2 ответов
спросил 04 Авг, 13 от Lalamise (200 баллов)
0 голосов
2 ответов
спросил 19 Окт, 13 от DrakO48 (120 баллов)
0 голосов
1 ответ
спросил 16 Март, 15 от аноним
0 голосов
1 ответ
спросил 06 Окт, 13 от аноним