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

Комментарии к статьям в Битрикс

Представляю Вашему вниманию компонент для работы с древовидными комментариями к элементам инфоблоков. Для хранения информации будет использоваться модуль «Блоги», что позволит легко ее модерировать прямо из публичной части. Основой стал компонент 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 поста блога и количество комментариев.

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

Компонент comment.multilevel
11.0 KiB
1322 Downloads
Детали...
Если вам понравилась статья, подписывайтесь на обновления блога по rss или присоединяйтесь в twitter

Поделиться ссылкой с друзьями:

Метки: , ,

Категории: Bitrix

Комментарии (35)

  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. Алексей, нужно удалить или закомментировать в component.php функцию pclearcomponentcache

  13. riko:

    День добрый.

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

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

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

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

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

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

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

  16. Дмитрий:

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

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

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

  17. MIK:

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

  18. Михаил:

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

  19. Алексей Валеев:

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

  20. Andrew:

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

  21. Иван:

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

  22. Иван:

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

  23. Иван:

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

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

  25. Александр:

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

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

  26. Алексей Валеев:

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

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

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

  29. Андрей:

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

  30. Алексей Валеев:

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

  31. Андрей:

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

  32. елена:

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

  33. Ivan:

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

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

  34. lord_amotar:

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

  35. Никита:

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