Вход Регистрация
*— обязательные для заполнения поля
Войти через социальные сети

[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



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


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


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

Комментарии
Получать ответы на почту
#54
Как передать товару рейтинг, который мы получили в отзывах. Звёздочки, которые.
Получать ответы на почту
#55
Звездочки несколькими способами можно выводить
1) Через публичные методы
$arRaing = CApiReviews::getElementRating($ELEMENT_ID);
$htmlRating = CApiReviews::getElementRatingHtml($ELEMENT_ID);
2) С помощью компонента
<? $APPLICATION->IncludeComponent(
"api:reviews.element.rating",
"",
array(
"IBLOCK_ID" => "",
"SECTION_ID" => "",
"ELEMENT_ID" => $ELEMENT_ID,
"ORDER_ID" => "",
"URL" => "",
"INCLUDE_CSS" => "Y",
"THEME" => "flat",
"COLOR" => "orange1",
"SHOW_PROGRESS_BAR" => "N",
"REVIEWS_LINK" => "#reviews",
"MESS_FULL_RATING" => "<span>#RATING#</span> из 5 на основе #COUNT# оценок покупателей",
"MESS_EMPTY_RATING" => "Отзывов пока нет, будь первым!",
"COMPONENT_TEMPLATE" => ".default",
"HIDE_BORDER" => "N",
),
false,
array('HIDE_ICONS' => 'Y')
); ?>
На демо-странице можно скачать примеры
https://tuning-soft.ru/demo/api.reviews/
Получать ответы на почту
#58
Хочу отметить, что публичные методы CApiReviews показывают рейтинг с учетом всех отзывов, включая неактивные.
Получать ответы на почту
#64
Спасибо большое! Выгрузил бета-фикс 4.2.1, добавил там еще SITE_ID по умолчанию.
Получать ответы на почту
#59
Как сформировать правильно параметр, чтобы админ в письме получал ссылку на товар в публичном части?
Получать ответы на почту
#65

В этом модуле всегда приходит две ссылки

Проверьте почтовый шаблон:
Тип почтового события: API_REVIEWS_ADD
Сообщение должно быть: #WORK_AREA#

Получать ответы на почту
#78
Поставил - есть несколько вопросов )

1. У меня выводятся поля только рейтинг, комментарий, имя гостя, они же обязательные. Это имя гостя автоматически заполняется, если пользователь залогинен на сайте, точнее в поле стоит placeholder, так вот если я под залогиненным пользователем пишу(!) комментарий, то не отправляется отзыв (вообще ничего не происходит) пока не заполню поле "имя гостя", хотя там стоит подставка правильная, а вот если я ставлю поле комментарий необязательным и не заполняю его, то всё нормально работает и имя передаётся, можно его не трогать.

2. Хотелось бы чтоб отзывы, в которых нету текста, т.е. просто оценку ставят, я так сделал у себя, автоматически скрывались (но не деактивировались), на кой видеть просто имя пользователя и его оценку? ) ну как опция может быть. Или какое то рядом (отдельное может) поле, типа просто оценку хочет человек поставить и всё.

3. Непонятны поля в настройках "Поле первой сортировки" и т.д. это вообще на что влияет? ))) в документации не нашёл, всё истыкал по-разному - никакого эффекта.

4. Чёт вроде много вопросов было, но чёт забыл уже, часов 5 внедрял себе на сайт, устал ) если будет фидбЕк ещё напишу )

Спасибо.
Получать ответы на почту
#81

Здравствуйте!

1) Если ничего не происходит, смотрите ошибки в консоли, в ответе на аякс-запрос.
Я попозже проверю ситуацию. У авторизованного только подсказка есть, чтобы видно было, заполнять не обязательно, т.к .на сайте у него уже должно быть Имя и Фио, в базу отзывов пишется только ID пользователя, но не всегда это подходит, согласен, тут еще предстоит подумать.

2) Не пойму зачем их скрывать? Например, на Гугл Плей там также сделано, но всем показываются.
На мой взгляд, это не несет никакой пользы магазину, они только пространство жрут, все покупатели считывают отзывы, что там покупатели пишут.
Но если что, там вроде глобальный фильтр списку отзывов можно применить, свой, также как и в компонентах инфоблока.

3) Это сортировка для списка отзывов уже при выводе, тут без знаний MySQL-сортировки не поймете, но в целом все просто, каждая сортировка при выборке отзывов из базы применяется в заданном вами порядке, где поля будут совпадать, одинаковые, начнет применяться следующая сортировка, и так до последней, вот кратко так.
Например, у поля SORT везде одинаково 500, тут по полю Сортировка нечего сортировать, применяется следующая сортировка, например по Названию, или наоборот, как вы сами задали.

4) Да, если что, пишите, 5 часов это нормально

Получать ответы на почту
Как пофиксить такую странную вещь :
Переносил отзывы со старого сайта вручную, путем копирования и вставления в фронтенде к нужным товарам нужный отзыв. Был залогинен как админ, так как нужно было после каждого переноса менять дату. После кадого переноса приходили уведомления администратору, что оставлен новый отзыв. Но после переноса, пошли новые отзывы от покупателей, и вот в этом случае администратору не приходят сообщения о том что отзыв был добавлен.
Настроек никаких не нашел.
Получать ответы на почту
Все проблемы с отправкой писем стоит начинать смотреть в базе в таблице b_event и анализировать, туда все письма с сайта падают в очередь для отправки.
В модуле никаких настроек нет, все как обычно, письмо добавляется в базу, а дальше его отправляет Битрикс в почтовый сервер.
Единственное можете проверить наличие e-mail в трех местах, может просто не туда отправляется, кто-то изменил мыло:
1) В настройках компонента "Email для уведомлений"
2) В настройках сайта "E-Mail адрес по умолчанию"
3) В настройках главного модуля "E-Mail администратора сайта (отправитель по умолчанию)"
Если раньше приходили, то явно что-то, где-то изменилось.
Получать ответы на почту
Добрый день. Можно ли добавлять/удалять поля формы отзыва?
Получать ответы на почту
Да, в настройках компонента задается набор полей
Получать ответы на почту
Подскажите, как привязать конкретные отзывы к конкретному элементу, Сделал все по инструкции,
в админке все верно указывает, но в публичной части выводит список всех отзывов( заходишь в любой элемент, там весь список отзывов) Заранее спасибо.
Получать ответы на почту
Если через параметры компонента передаете привязку к ID товара, то скорее всего у вас они закэшированы.
https://s.mail.ru/Aoqo/w9uS9zNMj
Никакая динамика в кэше не работает, кэш это типа html-файл на диске, который подключается и выводится вместо динамики, без каких либо изменений.
Получать ответы на почту
Добрый вечер, столкнулся с необычным поведением компонента api:reviews. Прописываю в параметр LIST_ITEMS_LIMIT ограничение по кол-ву выводимых элементов, если без привязки к ID товара, то фильтр срабатывает нормально, а если ставить привязку по ID, то получается следующее.
Проверялось при отзывах в кол-ве 11, при увеличении кол-ва отзывов, меняется кол-во выводимых элементов на странице, при одинаковых заданных ограничений, по кол-ву выводимых элементов, так при 11 отзывов, ограничение выводимых элементов 2, кол-во на странице 3, при 11 отзывов, ограничение выводимых элементов 3, кол-во на странице 5, при 11 отзывов, ограничение выводимых элементов 4, кол-во на странице 7.
Скриншот
Получать ответы на почту
А это фича битрикса, "обратная постраничная навигация" так работает, это пока в компоненте сделано принудительно, никак не изменить, как будет время постараюсь доработать этот момент, пока так пользуйтесь.
Она нужна для кэширования старых записей, чтобы только последняя страница обновлялась.
Получать ответы на почту
И возможно ли реализовать на одной странице сразу 2 компонента с отзывами, один из них будет комментариями к товару, а другой обзором товара и при этом у каждой вкладки были только свои элементы отзывов?
Получать ответы на почту
Я стараюсь каждый компонент делать так, чтобы работали отдельно, но я сам не пробовал, не всегда так получается, попробуйте.
Для комментариев я отдельный модуль делаю, но он пока еще, можно сказать, совсем альфа.
Получать ответы на почту
Спасибо за ответы, насчет 2-го вопроса, дело в том, что в админке битрикса, я не нашел возможности создания раздела для отзывов (скрин), а задумка было следующая, на странице карточка товара, сделать 2 таба, комментарии и обзоры, добавить 2 компонента решения, но не смог найти параметры, которые указывали бы, в какой раздел (если я не нашел где их можно создать, то мб это где-то можно сделать) добавлялись новые отзывы, для того, чтобы скажем в табе комментарии к товару, не выводились отзывы из таба обзоры и наоборот, стандартные возможности битрикса позволяют сделать разбивку на форумы, чтобы все в одной куче не лежали, вот и интересовался, имеется ли у данного решения, такая возможность
Получать ответы на почту
В админке все одним списком будет, иначе не сделать, только фильтром пользоваться.
В публичке, например, для Отзывов и Обзоров можно записывать в общий айдишник товара в параметр ELEMENT_ID, а айдишники инфоблоков разные.
Например, для Отзывов айдишник инфоблока IBLOCK_ID = 26, для Обзоров айдишник инфоблока IBLOCK_ID = 27, и тогда в фильтре в админке можно будет отдельно фильтровать по инфоблоку, возможно для обзоров надо будет создать отдельный пустой инфоблок, чтобы он в фильтре в списке выбора инфоблоков был, можно было там выбрать его и фильтрануть.
По поводу пунктов, как в форуме, я вас понял, может в будущем что-нибудь придумаю, какую-нибудь группировку.
Для фильтрации отзывов используются ключи: IBLOCK_ID, ELEMENT_ID, SECTION_ID, URL
Вот если в них что-то записываете при добавлении отзыва, вообще все что угодно, хоть какой-то произвольный айдишник можно вставить, то при выводе отзывов посетителю отзывы выводятся согласно фильтрации по данным ключам.
Получать ответы на почту
Спасибо за помощь, думаю такой вариант решения подойдет.
Получать ответы на почту
Добрый день, каким образом можно вызвать событие добавления/удаления отзыва вручную, через апи?
Нашел только завязку на события, у данного модуля есть свои методы добавления элементов, как при работе с элементами ИБ?

CIBlockElement::Delete
CIBlockElement::Add
CIBlockElement::Update
Получать ответы на почту
1) В документации есть описание событий модуля
https://tuning-soft.ru/docs/api.reviews/introduction/setting.html
2) Отзывы и почти уже все мои модули написаны на ORM Битрикс, пример использования:
<?
if(\Bitrix\Main\Loader::includeModule('api.reviews')){

//Получить список отзывов по фильтру
Api\Reviews\ReviewsTable::getList();

//Получить массив одного отзыва по фильтру
Api\Reviews\ReviewsTable::getRow(

//Удалить отзыв по ID (прикрепленные файлы и видео удалятся автоматически с отзывом)
Api\Reviews\ReviewsTable::delete($id)

//Обновить отзыв по ID
Api\Reviews\ReviewsTable::update($id, array('ACTIVE' => 'N'));
}
?>
Получать ответы на почту
ЗОЖ
Комментарии
Последние комментарии
Возникли проблемы с модулем: TS Умные отзывы Разместили на сайте, на карточке товара, пример: https:...
Здравствуйте! Как-то я проглядел ваш вопрос, пока такой возможности нет, но планировал выгрузку в E...
Я с февраля с Яндексом веду телефонную борьбу. Магазин поменял адрес в пределах города, поменял на г...
Конвертация валют пока еще не работает, модуль практически весь переписан, это остается еще сделать,...
Здравствуйте! Подскажите, в модуле задана какая-то функция конвертации валюты? Т.е. цена у одного т...
Здравствуйте! Сделал все по инструкции. На почту приходит письмо с ссылкой на оплату, пользователь о...
Подписка
Выберите рассылку