Комментарии с ответами в битрикс
3 октября 2019 1С-Битрикс
Стандартно в комплексных компонентах битрикса используется компонент forum.topic.reviews, который не предусматривает древовидных ответов на комментарии, как например в соц. сетях.
Получилось реализовать такой функционал стандартными средствами битрикса, с помощью другого компонента blog.post.comment — комментарии к сообщению блога, который входит в состав photogallery.detail.comment — комментарии к фотографиям.
Решение задачи простое, надо просто заменить код вывода forum.topic.reviews на photogallery.detail.comment. Мне это необходимо было сделать в комплексном компоненте news в детальной новости. Но для начала нужно создать блог. А здесь можно сгенерировать sitemap.xml для вашего сайта.
Идем в Рабочий стол → Сервисы → Блоги → Блоги и добавляем новый блог. Важно заполнить Название, название латинскими буквами, включить комментарии и дать доступ на чтение и комментарии всем посетителям. У меня получилось примерно следующее:
Идем в /bitrix/templates/название_шаблона/components/bitrix/news/шаблон_компонента/detail.php, находим код forum.topic.reviews и меняем на:
<?$APPLICATION->IncludeComponent( "bitrix:photogallery.detail.comment", "comments", array( "IBLOCK_TYPE" => "main", "IBLOCK_ID" => "1", "ELEMENT_ID" => $arResult["VARIABLES"]["ELEMENT_ID"], "DETAIL_URL" => "/news/#ELEMENT_ID#/", "CACHE_TYPE" => "N", "CACHE_TIME" => "3600", "COMMENTS_TYPE" => "blog", "COMMENTS_COUNT" => "50", "BLOG_URL" => "news", "PATH_TO_SMILE" => "/bitrix/images/blog/smiles/", "PATH_TO_USER" => "", "PATH_TO_BLOG" => "", "COMPONENT_TEMPLATE" => "comments", "COMPOSITE_FRAME_MODE" => "A", "COMPOSITE_FRAME_TYPE" => "AUTO" ), false );?>
Итак, что тут у нас. IBLOCK_TYPE
и IBLOCK_ID
соответственно тип и ID инфоблока с новостями, "COMMENTS_TYPE" => "blog"
— тип комментариев — блог, "BLOG_URL" => "news"
это название блога на латинице, которое указывалось при создании. Ну и самый важный параметр это ID новости "ELEMENT_ID" => $arResult["VARIABLES"]["ELEMENT_ID"]
— в детальной новости detail.php, он передается в значении $arResult["VARIABLES"]["ELEMENT_ID"]
.
Ну и я сделал отдельный шаблон comments для компонента так как надо было модернизировать его внешний вид. Папка со смайлами указывается в параметрах компоненты. У меня это работало в старой версии, но после обновления пришлось изменить вывод вручную в коде самого компонента комментариев. И вот что получилось:
Не выводит
выводит