Битрикс. Комментарии к элементам инфоблока

24.07.2018

Теги: CMSБитриксИнфоблокКомментарииКомпонентФорумЭлементИнфоблока

Пусть у нас есть некий инфоблок (блог, новости, статьи, товары, галерея). В публичной части сайта для показа списка элементов инфоблока и самих элементов используется комплексный компонент bitrix:news. И мы хотим добавить возможность оставлять комментарии к элементам инфоблока.

По идее, для этого достаточно отметить checkbox «Разрешить отзывы» в настройках компонента bitrix:news:

Но после этого получаем ошибку «Не указан форум для отзывов». При чем здесь форум, если речь идет о комментариях/отзывах — совершенно непонятно. Хорошо, тогда открываем файл, который отвечает за показ детальной страницы и видим, что за комментарии отвечает компонент bitrix:forum.topic.reviews:

<?php
/*
 * Файл local/templates/voguis_blog/components/bitrix/news/blog/detail.php
 */
?>
<!-- код пропущен -->
<?php if ($arParams["USE_REVIEW"]=="Y" && IsModuleInstalled("forum") && $ElementID): ?>
    <hr />
    <?php
    $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"],
            "DATE_TIME_FORMAT" => $arParams["DETAIL_ACTIVE_DATE_FORMAT"],
            "ELEMENT_ID" => $ElementID,
            "AJAX_POST" => $arParams["REVIEW_AJAX_POST"],
            "IBLOCK_ID" => $arParams["IBLOCK_ID"],
            "URL_TEMPLATES_DETAIL" => $arResult["FOLDER"].$arResult["URL_TEMPLATES"]["detail"],
        ),
        $component
    );
    ?>
<?php endif; ?>

Уже что-то проясняется. Открываем исходный код компонента bitrix:forum.topic.reviews:

/*
 * Файл bitrix/components/bitrix/forum.topic.reviews/component.php
 */
if (!CModule::IncludeModule("forum")):
    ShowError(GetMessage("F_NO_MODULE"));
    return 0;
elseif (!CModule::IncludeModule("iblock")):
    ShowError(GetMessage("F_NO_MODULE_IBLOCK"));
    return 0;
elseif ($arParams["FORUM_ID"] <= 0):
    // вот это сообщение об ошибке: не указан ID форума
    ShowError(GetMessage("F_ERR_FID_EMPTY"));
    return 0;
elseif ($arParams["ELEMENT_ID"] <= 0):
    ShowError(GetMessage("F_ERR_EID_EMPTY"));
    return 0;
endif;

Чтобы оставлять сообщения на форуме, этот форум надо сперва создать. Так что идем в панель управления и создаем форум «Комментарии к постам блога»:

В настройках доступа надо разрешить всем пользователям создавать новую тему:

Чтобы комментарии проходили премодерацию перед публикацией, в настройках форума надо выбрать «Премодерируемый».

Потом выбираем этот форум в настройках компонента bitrix:news:

После чего комментарии заработают:

Если форум премодерируемый, надо создать отдельную страницу в публичной части сайта и предоставить к ней доступ тем, кто будет выполнять модерацию. На странице надо разместить комплексный компонент «Форум» bitrix:forum. В настройках компонента, в параметре «Показывать только выбранные форумы», выбрать «Комментарии к постам блога».

Подводя итог — как и все в Битрикс, комментарии сделаны через ж… Это ж надо было додуматься — для комментариев нужен форум.

Поиск: CMS • Битрикс • Инфоблок • Комментарии • Компонент • Форум • Элемент инфоблока

Каталог оборудования
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Производители
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Функциональные группы
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.