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

Нужна Помощь!Помогите помощью API вывести список материалов и комментарии к ним

00 голосов
2
Есть код, но он не доработан!
На всякий случай приведу его:
Код
CModule::IncludeModule("blog");
            $arOrder = Array("DATE_CREATE" => "DESC");
            $arFilter = Array("BLOG_ID"=>'1');
            $arSelectedFields = Array("ID", "BLOG_ID", "POST_ID", "AUTHOR_ID", "AUTHOR_NAME", "TITLE", "POST_TEXT", "DATE_CREATE");
            $dbComment = CBlogComment::GetList($arOrder, $arFilter, array("POST_ID", "MAX"=>"ID"), array("nTopCount"=>10), $arSelectedFields);
            $PostID = array();
               while ($arComment = $dbComment->Fetch())
               {
                  $PostID[] = $arComment["POST_ID"];
                  
                        //tpk_print_r($arComment,$arComment["POST_ID"],'all');
   $ID = $arComment["POST_ID"];
   $arComment = CBlogComment::GetByID($ID);
      if(is_array($arComment))
      tpk_print_r($arComment,$arComment["POST_ID"],'all');
                  else
                     echo "Комментарий не найден.";
               
               }      
         
                  CModule::IncludeModule("iblock");
                     $arSelect = Array("ID","NAME","DATE_CREATE","PROPERTY_BLOG_POST_ID","PREVIEW_TEXT");
                     $arFilter = Array("IBLOCK_ID"=>"48", "PROPERTY_BLOG_POST_ID"=>$PostID);
                     $res = CIBlockElement::GetList(Array(), $arFilter, false, Array("nTopCount"=>10), $arSelect);
                        while($ob = $res->GetNextElement())
                        {
                           $arFields = $ob->GetFields();
                        
                        tpk_print_r($arFields,$arFields["ID"],'all');
                  /*echo '<tr align="left"><td width="500"><a href="http://www.uchmet.ru/library/material/'.$arFields["ID"].'/" >'.$arFields["NAME"].'</a><div>'.$arFields["PREVIEW_TEXT"].'</div></td>'.
                 '<td>'.$arFields["DATE_CREATE"].'</td>'.
                 '<td><a href="http://www.uchmet.ru/library/material/'.$arFields["ID"].'/#'.$arFields["PROPERTY_BLOG_POST_ID_VALUE"].'" >'.$arComment["NUM_COMMENTS"].'&nbsp;'.$arUser["NAME"].'&nbsp;'.$arUser["SECOND_NAME"].'</a></td>'.
                 '<td><a href="http://www.uchmet.ru/people/user/'.$arUser["ID"].'/" >'.$arUser["LAST_LOGIN"].'</a></td></tr>';*/
                        }
               
                        
//echo "</tbody></table><br />";


Вообщем суть тут в том, что мы сначала получаем список постов, создаем отдельный массив где мы собираем POST_ID, после выводим список материалов у которых есть этот POST_ID, то есть есть комментарий
Вопрос в том как вывести сами комментарии, имя автора, ID-комментария, чтобы было все в одной табличке!
спросил 09 Фев, 13 от Chemikals (840 баллов)

2 Ответы

00 голосов
Potapchik,
Цитата
Вообщем суть тут в том, что мы сначала получаем список постов, создаем отдельный массив где мы собираем POST_ID, после выводим список материалов у которых есть этот POST_ID, то есть есть комментарий

вот еще раз вчитываюсь в ваше сообщение, и не понимаю, что должно быть на выходе.
догадываться что ли?
вот я попробовала догадаться...

не претендую на "красоту" решения, но смысл получается такой:

открыли таблицу
Начали цикл получения ID-шников постов (или комментов, я так и не поняла, что вам надо)
в цикле для каждого ID применяем метод
Код
CBlogPost::GetByID(
 int ID
);
такой метод есть и для постов, и для комментов.
т.е. перебираем массив ID-шников и получаем поля
выводим это дело в строке таблицы
Закончили цикл получения ID
закрыли таблицу.

Если чего не так, поправьте.

И еще:
Цитата
мы сначала получаем список постов, создаем отдельный массив где мы собираем POST_ID

ну зачеееееем, мы ведь уже получили массив...

P.S. Буду весьма признательна, если кто-то из экспертов укажет на ошибки в моей идее.
ответил 09 Фев, 13 от Texnik (1,860 баллов)
00 голосов
Julliet спасибо вам за то, что нашли время посмотреть мой код!
Задача вообще стоит так!Вывести список материалов библиотеки только тех у которых есть комментарии и комментарии должны быть последние которые были добавлены!
Вот сайт на котором надо сделать: www.uchmet.ru/library/
Может так будет понятнее :)
ответил 09 Март, 13 от Chemikals (840 баллов)

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

0 голосов
8 ответов
спросил 26 Июнь, 13 от Ogyrez (240 баллов)
0 голосов
1 ответ
0 голосов
4 ответов