Представляю Вашему вниманию компонент для работы с древовидными комментариями к элементам инфоблоков. Для хранения информации будет использоваться модуль «Блоги», что позволит легко ее модерировать прямо из публичной части. Основой стал компонент photogallery.detail.comment, из которого удалено все ненужное, а также добавлена возможность работать с кодами секций и элементов в режиме ЧПУ.

Установка и настройка

Внизу страницы находится ссылка на архив с компонентом. Первым делом, его необходимо распаковать в директорию \bitrix\components\ сервера.

Следующим шагом будет настройка блогов в административной части. Их можно отыскать в разделе Сервисы — Блоги. Если такого раздела нет, то возможны 2 варианта — у Вас редакция «Старт» или не установлен модуль (Настройки — Настройки продукта — Модули).

Создаем новый блог:

Создание блога

Даем пользователям необходимые права:

Настройка прав пользователей блога в Битрикс

Дальнейшие действия рассмотрим на примере комплексного компонента bitrix:news. Разместим и настроим его до рабочего состояния на произвольной странице сайта. Важно включить отзывы, остальные настройки этой группы не имеют значения.

Например, для режима ЧПУ с кодами секций и элементов настройки будут такими:

Настройки компонента bitrix:news

Теперь нужно скопировать шаблон компонента в шаблон сайта и применить его:

Копирование шаблона компонента

Последнее, что осталось сделать — это зайти в любую новость на сайте в режиме разработки, нажать на иконку компонента с подписью «Новости» и выбрать пункт «Редактировать шаблон компонента». Если все сделано правильно, откроется окно, аналогичное этому:

Редактирование шаблона "новость детально"

Заменяем кусок кода

<?if($arParams["USE_REVIEW"]=="Y" && IsModuleInstalled("forum") && $ElementID):?>
<hr />
<?$APPLICATION->IncludeComponent(
    "bitrix:forum.topic.reviews",
    "",
    Array(
        "CACHE_TYPE" => $arParams["CACHE_TYPE"],
        "CACHE_TIME" => $arParams["CACHE_TIME"],
        "MESSAGES_PER_PAGE" => $arParams["MESSAGES_PER_PAGE"],
        "USE_CAPTCHA" => $arParams["USE_CAPTCHA"],
        "PATH_TO_SMILE" => $arParams["PATH_TO_SMILE"],
        "FORUM_ID" => $arParams["FORUM_ID"],
        "URL_TEMPLATES_READ" => $arParams["URL_TEMPLATES_READ"],
        "SHOW_LINK_TO_FORUM" => $arParams["SHOW_LINK_TO_FORUM"],
        "ELEMENT_ID" => $ElementID,
        "IBLOCK_ID" => $arParams["IBLOCK_ID"],
        "POST_FIRST_MESSAGE" => $arParams["POST_FIRST_MESSAGE"],
        "URL_TEMPLATES_DETAIL" => $arParams["POST_FIRST_MESSAGE"]==="Y"? $arResult["FOLDER"].$arResult["URL_TEMPLATES"]["detail"] :"",
    ),
    $component
);?>
<?endif?>

на приведенный ниже

<?if($arParams["USE_REVIEW"]=="Y" && IsModuleInstalled("blog") && $ElementID):?>
<hr />
<?$arCommentsParams = Array(
 	"IBLOCK_TYPE" => $arParams["IBLOCK_TYPE"],
 	"IBLOCK_ID" => $arParams["IBLOCK_ID"],
 	"SECTION_ID" => $arResult["VARIABLES"]["SECTION_ID"],
    "PERMISSION" => $arResult["VARIABLES"]["PERMISSION"],
    "ELEMENT_ID" => $ElementID,
    "COMMENTS_TYPE" => "blog",
    "BEHAVIOUR" => "USER",
    "DETAIL_URL" => $arResult["FOLDER"].$arResult["URL_TEMPLATES"]["detail"],	
    "PATH_TO_SMILE" => $arParams["PATH_TO_SMILE"],
    "CACHE_TYPE" => $arParams["CACHE_TYPE"],
    "CACHE_TIME" => $arParams["CACHE_TIME"]
);
    $arCommentsParams["BLOG_URL"] = "comments"; // !!! Сюда надо вписать "Название латинскими буквами", которое было указано при создании блога !!!
    $arCommentsParams["PATH_TO_USER"] = "";
    $arCommentsParams["PATH_TO_BLOG"] = "";

$APPLICATION->IncludeComponent(
    "av:comment.multilevel", 
    "", 
    $arCommentsParams,
    $component,
    array("HIDE_ICONS" => "Y")
);
?>
<?endif?>

После этих манипуляций у каждого элемента инфоблока должна появиться форма для комментирования в публичной части и 2 новых свойства элемента — id поста блога и количество комментариев.

Форма добавления комментария

Больше статей и материалов по web-разработке в tg-канале - подписывайтесь!

Подписаться в telegram

35 комментариев “Компонент 1с-Битрикс: древовидные комментарии к статьям

  1. Павел

    В итоге получаю надпись: ‘av:comment.multilevel’ is not a component

  2. Павел

    Все, заработало =)

  3. Алексей (promotexx)

    Алексей, спасибо. Очень нужный компонент.

  4. Лев

    av:comment.multilevel’ is not a component
    как побороть?

  5. Tepl

    Поставил данный компонент, но есть одна проблема: когда оставляю комментарий — перекидывает со страницы товара на страницу http://teplo-hot.com.ua/catalog/products/
    Если у вас есть возможность, посмотрите и скажите, в чем проблема и как её исправить?
    На сайте используется ЧПУ.

  6. Алексей Валеев

    Tepl, не знаю, такой проблемы раньше не встречал. Проверьте настройки, посмотрите action форм, найдите LocalRedirect который перекидывает..

  7. Кристина

    Как распаковать компонент???я новичок((((((напишите поподробнее!!!
    Спасибо

  8. Кристина

    И что значит временное закрытие публичной части сайта???что надо сделать что бы открыть???

  9. Алексей

    Когда не указываешь email не выдается ошибка

  10. Алексей

    Спасибо большое!

    Как раз нужны были древовидные комментарии, взял за основу ваши, чуть подправив. Все работает, все отлично.

  11. Алексей

    После добавления комментария стал выдавать ошибку

    Cannot redeclare function pclearcomponentcache() (previously declared in /bitrix/components/av/comment.multilevel/component.php:7). If this code worked without the Zend Optimizer+, please set zend_optimizerplus.dups_fix=1 in your ini file in /bitrix/modules/main/classes/general/module.php on line 220

  12. riko

    День добрый.

    От чего зависит декларирование функции pclearcomponentcache?

    Получил: Cannot redeclare pclearcomponentcache() in /var/www/html/bitrix/modules/photogallery/include.php on line 263

    Если комментирую функцию в компоненте, то ругается на вызов PClearComponentCache в компоненте (на то, что функция не описана).

    Пока изменил название функции, на avPClearComponentCache, но это не лучший выход наверное.

    ЗЫ: Спасибо за компонент.

  13. Макс

    Подскажите а как удалять не нужные коментарии

  14. Денис

    Я установил ваш модуль, все хорошо, вот только надпись «Добавить комментарий», и кнопки ответить, удалить и т д отображаются в кодировке UTF8 а весь сайт в Win1251, я 2 дня лазил по файлам и не мог найти где их изменить. Не подскажете?

  15. Дмитрий

    Здравствуйте!
    вроде все делаю как написано, только сайт выдает

    Can not find ‘templete1’ template with page ‘news’

    подскажите как исправить

  16. MIK

    ‘av:comment.multilevel’ is not a component
    вы файлы скопировали в «\bitrix\components\bitrix»
    а пытаетесь открыть av
    замените
    $APPLICATION->IncludeComponent(«av:comment.multilevel»,
    на
    $APPLICATION->IncludeComponent(«bitrix:comment.multilevel»,

  17. Михаил

    Добрый день Алексей. Помогите, не знаю как сделать. 1С Битрикс Экспер. Задача: Выводить последние комментарии к статьям в одном блоке. Все комментарии идут в форум в закрытый для пользователей раздел. Комментарии на форуме делятся по темам статей. Есть стандартный модуль 1С Битрикс, который выводит название тем к которым есть последние комментарии, НО задача состоит в другом — нужно выводить сами «отрывки» (текст!) комментариев и чтобы при клике шёл переход не в форум (закрытый), а на статью которая обсуждается.
    Всю голову сломал! Много чего предпринимал… Пытался использовать стандартный модуль Блогов для вывода последних комментариев. Перед этим использовал Ваше описание выше, НО при клике по последним комментариям в уже Топике комментариев Блога, переход осуществлялся в никуда. Вот описание метода
    Вообщем ни знаю что и делать! в 1С битриксе посылают …

  18. Алексей Валеев Автор записи

    Михаил, эта задача не решается без правки кода.
    Суть в том, что форум ничего не знает о статье, к которой хранит комментарии. Т.е. связь «новость» => «тема форума» в одну сторону.
    Можно попробовать такой алгоритм:
    — использовать компонент, который выводит последние темы или сообщения из форума
    — в кэшируемой области (result_modifier.php шаблона например) получить все новости, которые через свойство наподобие FORUM_TOPIC_ID привязаны к выбранным темам форума
    — вывести все данные в нужном виде

  19. Andrew

    Добрый день,
    на этапе «скопировать шаблон компонента в шаблон сайта и применить его»
    После применения копии шаблона на странице появляется ошибка:
    Can not find ‘news1′ template with page ‘news’

  20. Иван

    подскажите пожалуйста, как справиться с ‘av:comment.multilevel’ is not a component

  21. Иван

    простите, я тупицца, выше уже отвечали на мой вопрос…

  22. Иван

    Добрый день.
    А у этого метода есть уведомления по емелу о новых комментариях ?

  23. Александр

    Добрый день.
    Данный компонент поддерживается последней версией Битрикс?
    Попытка установить закончилась ошибкой.

  24. Александр

    Все добавляется, но как-то криво работает….при добавлении комментария почему-то надо заходить в «комментарии» на блоге и нажимать «показать», хотя они опубликованы уже..также, комментарии не появляются сразу же после добавления, надо делать вышеуказанные действия..
    Еще: при обновлении страницы пропадают все комментарии!!!!!!!! Хотя в административной части все есть…

    Легче сделать все это с форумом и закрыть его от индексации..

  25. Алексей Валеев

    Компонент не тестировался на последних версиях битрикса.

  26. GTAlex

    Можно ли задействовать премодерацию комментариев ?

  27. GTAlex

    При удалении комментария из админки — поле количество комментариев не уменьшается

  28. Андрей

    Где редактировать шаблон вывода комментариев? (Мне нужно добавить некий текст непосредственно перед выводом комментариев, имитируя эти самые комментарии, и может быть даже между комментариев).

  29. Алексей Валеев Автор записи

    Андрей, добрый день!
    В компоненте для вывода комментариев используется стандартный компонент bitrix:blog.post.comment. Соответственно, самый простой путь — скопировать .default шаблон этого компонента в свой шаблон сайта и отредактировать. Или поменять название в шаблоне моего компонента.

  30. Андрей

    Спасибо, разобрался)

  31. елена

    Добрый день! Я только начинаю осваивать вёрстку, подскажите пожалуйста как исправить проблему:
    Раздел новости. сначала выводится картинка, затем идёт текст.
    Текст отображается криво: справа дубль заголовка (где убрать не пойму) а слева текст узким столбиком. (Как будто разбит на два столбца, есл,и конечно, сравнение с вордом уместно в данном случае)

  32. Ivan

    «Добрый день,
    на этапе «скопировать шаблон компонента в шаблон сайта и применить его»
    После применения копии шаблона на странице появляется ошибка:
    Can not find ‘news1′ template with page ‘news’»

    Ребяяятки, Кто нибудь знает как это лечится? Та же самая проблема

  33. lord_amotar

    как добавить в компонент bitrix:catalog????

  34. Никита

    Алексей, подскажите, пожалуйста, как настроить внешний вид компонента?

Добавить комментарий

Ваш адрес email не будет опубликован.