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

Создать сообщение на форуме вместе с созданием инфоблока

00 голосов
5
Можно ли автоматом, вместе, например, с новостью, создать и сообщение на форуме?
спросил 11 Дек, 13 от Saksus (100 баллов)

5 Ответы

00 голосов
Да, с помощью обработчика на добавление элемента инфоблока.

Код
<?
// файл /bitrix/php_interface/init.php
// регистрируем обработчик
AddEventHandler('iblock', 'OnAfterIBlockElementAdd', Array('MyClass', 'OnAfterIBlockElementAddHandler'));
class MyClass
{
   function OnAfterIBlockElementAddHandler(&$arFields)
   {
      global $USER;
      
      $FID = 123;//Код форума, в который добавляется новая тема. 
      $newsIB = 456;//ID инфоблока новостей
      
      if ($arFields['ID']>0 && $arFields['IBLOCK_ID']==$newsIB && CModule::IncludeModule('forum'))
      {
         $arFieldsPost = array(
                        'TITLE' => $arFields['NAME'],
                        'POST_MESSAGE' => $arFields['DETAIL_TEXT'],
                        'AUTHOR_NAME' => $USER->GetFullName()
                        );
         ForumAddMessage('NEW', $FID, 0, 0, $arFieldsPost, $strErrorMessage, $strOKMessage);
      }
   }
}
?>
ответил 16 Фев, 14 от Arn4 (2,140 баллов)
00 голосов
Как-то странно слетает все...
Вот код еще раз:
Код
<?
// файл /bitrix/php_interface/init.php
// регистрируем обработчик
AddEventHandler('iblock', 'OnAfterIBlockElementAdd', Array('MyClass', 'OnAfterIBlockElementAddHandler'));
class MyClass
{
   function OnAfterIBlockElementAddHandler(&$arFields)
   {
      global $USER;
      
      $FID = 123;//Код форума, в который добавляется новая тема. 
      $newsIB = 456;//ID инфоблока новостей
      
      if ($arFields['ID']>0 && $arFields['IBLOCK_ID']==$newsIB && CModule::IncludeModule('forum'))
      {
         $arFieldsPost = array(
                        'TITLE' => $arFields['NAME'],
                        'POST_MESSAGE' => $arFields['DETAIL_TEXT'],
                        'AUTHOR_NAME' => $USER->GetFullName()
                        );
         ForumAddMessage('NEW', $FID, 0, 0, $arFieldsPost, $strErrorMessage, $strOKMessage);
      }
   }
}
?>
ответил 07 Июнь, 14 от Arn4 (2,140 баллов)
00 голосов
Спасибо!
Буду пробовать...
ответил 05 Окт, 14 от Saksus (100 баллов)
00 голосов
Цитата

Код
<?

// файл /bitrix/php_interface/init.php

// регистрируем обработчик

AddEventHandler('iblock', 'OnAfterIBlockElementAdd', Array('MyClass', 'OnAfterIBlockElementAddHandler'));

class MyClass

{

&nbsp;&nbsp;&nbsp;function OnAfterIBlockElementAddHandler(&amp;$arFields)

&nbsp;&nbsp;&nbsp;{

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;global $USER;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$FID = 123;//Код форума, в который добавляется новая тема. 

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$newsIB = 456;//ID инфоблока новостей

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ($arFields['ID']>0 &amp;&amp; $arFields['IBLOCK_ID']==$newsIB &amp;&amp; CModule::IncludeModule('forum'))

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$arFieldsPost = array(

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'TITLE' => $arFields['NAME'],

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'POST_MESSAGE' => $arFields['DETAIL_TEXT'],

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'AUTHOR_NAME' => $USER->GetFullName()

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ForumAddMessage('NEW', $FID, 0, 0, $arFieldsPost, $strErrorMessage, $strOKMessage);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;}

}

?>

Здорово! Почти то что нужно. Но мне нужно немножко по другому:
можно ли сделать так: вывести ссылку после каждой новости "Обсудить" и только после её нажатия создавалась тема на форуме, так же как из компонента комментариев: пока никто не отпишет первое сообщение - тема на форуме не создастся.
И ещё как оставить вывод сколько комментариев на форуме.
И ещё проблема - добавил этот код - темы создаюся 2 сразу дублируюся. в чём может быть проблема? Буду рад если поможешь
ответил 06 Фев, 15 от Viktor (100 баллов)
00 голосов
Цитата
можно ли сделать так: вывести ссылку после каждой новости "Обсудить" и только после её нажатия создавалась тема на форуме, так же как из компонента комментариев: пока никто не отпишет первое сообщение - тема на форуме не создастся.

http://dev.1c-bitrix.ru/community/webdev/user/11948/blog/1103/
ответил 19 Май, 15 от Arn4 (2,140 баллов)

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

0 голосов
1 ответ
0 голосов
0 ответов
0 голосов
2 ответов
0 голосов
7 ответов
0 голосов
4 ответов
спросил 21 Янв, 14 от eff (160 баллов)