[1C Битрикс] Отзывы о магазине, отзывы о разделе, отзывы о товаре, отзывы о странице, Битрикс

Совсем недавно я разработал совершенно новый Битрикс модуль Отзывы о магазине, о товаре, о разделе, о странице +
Очень важной его особенностью является внешнее управление отзывами прямо на странице списка отзывов в публичной части, а также возможность 4-мя способами привязать отзывы к товару, к разделу, к странице и по умолчанию без привязки;

В этой статье это и рассмотрим, научимся добавлять отзывы к товару, разделу, к странице и без привязки по умолчанию.

Отзывы о магазине без привязки к чему-либо

За привязку отзывов отвечают вот эти настройки, если их оставить пустыми, то отзывы ни к чему не привязываются

Но возникает вопрос, а что в них передавать?
Если вы встраиваете отзывы в комплексные компоненты (каталог, новости), то необходимо в шаблонах компонента получить какой-то ID и передать в параметры вызова компонента отзывов в соответствующие ключи, например вот так:


Ключ параметра компонента = >  передаваемый ID (значение ключа)

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

"SECTION_ID"  => $intSectionID, //$arResult['ID'] | $arResult["VARIABLES"]["SECTION_ID"] | $intSectionID
"ELEMENT_ID" => $ElementID, //$arResult['ID'] | $arResult["VARIABLES"]["ELEMENT_ID"] | $ElementID
"URL" => $APPLICATION->GetCurPage(), //$APPLICATION->GetCurDir()

Отзывы о разделе

За привязку отзыва к разделу отвечает поле ID раздела.
В этом случае все отзывы будут привязаны к какому-то разделу сайта, но это условно, в это поле просто передается какой-то ID, это может быть и ID товара, и ID форума, и ID блога и т.д., какой-то условный ID.

Но чаще всего это отзывы о какой-то категории товаров.
Для примера разберем интеграцию комплексного компонента Отзывы о магазине + в раздел каталога Аксессуары на бесплатном готовом решении от 1С-Битрикс.

Будем считать, что решение установлено, модуль вы также установили на сайт, остается его внедрить.
Переходим в нужную страницу раздела каталога

Включаем режим правки и копируем шаблон компонента каталога, название любое



Все, шаблон каталога скопировали и применили, скопировался он в шаблон сайта в папку:
/bitrix/templates/имя_шаблона_сайта/components/bitrix/catalog/template2/

Теперь открываем текущую страницу в визуальном редакторе для редактирования

Удаляем все лишнее из нее, размещаем в ней компонент отзывов и настраиваем как нужно, поле ID раздела в настройках также остается пустым, страницу не сохраняйте, просто скопируйте настроенный код вызов компонента отзывов, а страницу закройте, иначе каталог пропадет со страницы, если сохраните ее.


Далее ищем в скопированном шаблоне файл, в котором выводится список товаров раздела  section.php, но в ной версии Битрикс в нем в самом низу еще есть инклуды вертикального / горизонтального отображения элементов  с фильтром, поэтому, получается нам нужен файл с вертикальным фильтром section_vertical.php
В самом низу этого файла аккуратно вставляем код вызова компонента отзывов и в значение ключа SECTION_ID подставим переменную $intSectionID в нее выше по коду передается ID раздела.
Кстати, перед компонентом я добавил <div style="clear: both;"></div> чтобы не ехала верстка.


Все, компонент отзывов мы настроили на работу с разделами, для каждого раздела каталога теперь будут свои отзывы.
Обновляем страницу Аксессуары и видим в самом низу появился компонент отзывов, но всю картину портят кракозябры)

Вот есть момент с кодировками, по умолчанию кодировка у всех файлов Битрикс, кроме лэнгов, в WINDOWS-1251 и если мы в шаблонах что-то пишем на Русском, то видим такие кракозябры, т.к. сам сайт в кодировке UTF-8.
Здесь надо по правилам хорошего тона выносить все Русские слова в лэнги шаблона, но чтобы от них избавиться быстро просто поменяем в редакторе кодировку файла section_vertical.php на UTF-8 и тогда кракозябры исчезнут, в редакторе PhpStorm 10 это делается здесь, в правом нижнем углу переключайте кодировку и далее в окне жмите Convert


Все, заново обновите страницу раздела и кодировка в отзывах станет нормальной.

Если кнопка добавления отзыва не реагирует, значит надо в настройках компонента включить jQuery.

Все, пробуем добавить отзыв о разделе, если все добавилось, значит мы все сделали правильно, отзывы о разделах работают!

Для проверки корректной работы перейдем в другой раздел, например, в Футболки, там отзывов не будет, все работает верно.


Обратите внимание!
В моем случае был включен вывод заголовка магазина в списке товаров, а т.к. его вызов в самом низу страницы, он перебивает заголовок товара


Необходимо отключить в настройках списка отзывов вывод заголовка


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

Отзывы о товаре / элементе

За привязку отзыва к товару отвечает поле ID элемента.

В этом случае все отзывы будут привязаны к какому-то товару/элементу, но это условно, в это поле просто передается какой-то ID, это может быть и ID раздела, и ID форума, и ID блога и т.д., какой-то условный ID, также как и с разделами.

Но чаще всего это отзывы о товаре.
Для примера разберем интеграцию комплексного компонента Отзывы о магазине + в товар комплексного компонента каталога на бесплатном готовом решении от 1С-Битрикс.

Будем считать, что решение установлено, модуль вы также установили на сайт, остается его внедрить.

Дабы не скучать в нашей карточке товара, выбираем самый красивый товар/элемент каталога, например, Спортивный Костюм Вечерний Спорт и попробуем интегрировать отзывы в самый низ страницы


За показ детального описания товара в шаблоне комплексного компонента каталога отвечает файл element.php
Шаблон компонента уже скопирован был нами ранее, если вы не копировали, посмотрите как это делается в "Отзывах о разделе".
Находим этот файл и почти в самом низу надо найти условие перед подключением фильтра, вставить туда код вызова компонента отзывов.




Все, отзывы к товару мы подключили, также наблюдаем проблемы с кодировкой, переключаем кодировку файла в UTF-8, как делали в "Отзывах о разделе" и проверяем, добавляем отзыв о товаре.

Отзывы о странице

В этом случае отзывы можно привязать к любой странице сайта, хоть к статической, достаточно в коде вызова компонента отзывов передать в значение ключа  "URL" => ""  адрес страницы, например, с помощью АПИ Битрикс.

1) Передадим адрес текущей страницы без параметров ?clear_cache=Y и т.д.
"URL" => $APPLICATION->GetCurPage()

2) Передадим адрес текущего раздела
"URL" => $APPLICATION->GetCurDir()

Название товара / раздела вместо названия магазина

В настройки компонента в соответствующие ключи можно передать название товара, название раздела, название страницы, вместо названия магазина.

Над компонентом получаете, например, название товара и подставляете в соответствующие ключам значения.
В моем случае в файле element.php я знаю только ID товара ($ElementID), по этому ID я могу получить любую информацию о товаре и передать в настройки компонента, например вот так:

$arSort = array();
$arFilter = array(
    'IBLOCK_ID' => $arParams['IBLOCK_ID'],
    '=ID'       => $ElementID,
);
$arSelect = array('ID','IBLOCK_ID','NAME');
$arElement = CIBlockElement::GetList($arSort, $arFilter, false, false, $arSelect)->Fetch();

И подставим вместо названия магазина название товара полученное выше в массив $arElement



Вот что получится в списке отзывов


И в форме добавления отзыва


На мой взгляд очень здорово, будут вопросы, задавайте!

Установка модуля