Evgenius

"Отзывы" для 1С-Битрикс

Отзывы для 1С-Битрикс маркетплейс
Решение позволяет организовать систему отзывов для любых элементов инфоблоков. Сделайте сайт более информативным, будьте полезны для пользователя - это в свою очередь в будущем может положительно сказаться на позициях сайта в выдаче поисковых систем (учет поведенческого фактора).
1200.00

Установка

Для вывода списка и формы размещения отзывов необходимо на странице подключить компоненты wsm:reviews.list и wsm:reviews.add.
Обязательным условием работы компонентов является переача ID элемента инфоблока в параметре ELEMENT_ID.

Разметить компоненты отзывов можно, например, в комплексном компоненте bitrix:catalog.
В данном случае установку компонентов необходимо производить в файле element.php (по пути: <шаблон компонента catalog>/element.php).

В данном файле идет подключение компонента catalog.detail.
bitrix:catalog.detail возвращает ID элемента инфоблока (в шаблоне по умолчанию компонент возвращает ID в переменную $ElementID), который можем использовать при подключении отзывов.

Компоненты отзывов необходимо разместить после подключенного компонента bitrix:catalog.element (или в противном случае определяем ID элемента другими способами).


Внимание! Не размещайте компоненты wsm:reviews.list и wsm:reviews.add внутри шаблона компонента catalog.element (по пути: <шаблон компонента catalog>/bitrix/catalog.element/template.php)
Кэштрование компонента catalog.element нарушает работу формы размещения отзыва (при отправке не обрабатываются поля формы). Оптимальное размещение в файле element.php, где кэширования данных не производится.


Компонент reviews.add - форма для отправки отзыва
	$APPLICATION->IncludeComponent(
  "wsm:reviews.add",
  ".default",
    Array(
	"ELEMENT_ID" => $ElementID, 	# ID элемента инфоблока
	"ONECOMMENT_REQUIRED" => "Y",	# Обязательность заполнения минимум одного из полей: Достоинства, Недостатки, Коммментарий
	"MESS_OK" => "", 		# Сообщение об успешном добавлении
	"FIELDS" => array( 		# Поля, выводимые на редактирование
		0=>"USER_NAME", 	# Поле: имя
		1=>"USER_EMAIL", 	# Поле: email 
		2=>"CITY", 		# Поле: город 
		3=>"DIGNITY", 		# Поле: достоинства 
		4=>"LIMITATIONS", 	# Поле: недостатки 
		5=>"COMMENTS", 		# Поле: комментарий
		6=>"RATING", 		# Поле: оценка товара 
		7=>"EXP_USING" 		# Поле: опыт использования 
		),

	"FIELDS_REQUIRED" => array(	# Обязательные поля
		0=>"USER_NAME",
		1=>"RATING",
		2=>"EXP_USING"
		),
	"USE_GEO" => "Y", 		# Автоматически Определять город по IP
	"NEED_AUTH" => "N",		# Разрешить добавление отзыва только авторизованным
	"USE_CAPTCHA" => "N" 		# Использовать каптчу для неавторизованных пользователей 
	  )
  );
Компонент reviews.rating - отображение рейтинга
$APPLICATION->IncludeComponent(
  "wsm:reviews.rating",
  ".default",
    Array(
	  "ELEMENT_ID" => $ElementID, 		# ID элемента инфоблока
	  "RATING_SHORT_TEMPLATE" => "N",	# Включение отображения рейтинга в виде одной звезды
	  "CACHE_TYPE" => "A",
	  "CACHE_TIME" => "3600"
	)
  );
Компонент reviews.list - отображение списка отзывов
$APPLICATION->IncludeComponent(
  "wsm:reviews.list",
  ".default",
	Array(
	  "ELEMENT_ID" => $ElementID,		# ID элемента инфоблока
	  "REVIEWS_COUNT" => "3", 		# Количество отзывов на странице
	  "LOADED_NUMBER" => "5", 		# Количество подгружаемых отзывов в (режиме подгрузки отзывов без перезагрузки страницы)
	  "CACHE_TYPE" => "A",
	  "CACHE_TIME" => "3600",
	  "DISPLAY_TOP_PAGER" => "N",
	  "DISPLAY_BOTTOM_PAGER" => "N",
	  "PAGER_TITLE" => "",
	  "PAGER_SHOW_ALWAYS" => "N",
	  "PAGER_TEMPLATE" => "",
	  "PAGER_SHOW_ALL" => "N",
	  "SHOW_RATING" => "Y", 		# Отображать рейтинг
	  "SHOW_RATING_TOTAL" => "Y", 		# Отображать общий рейтинг
	  "RATING_SHORT_TEMPLATE" => "N", 	# Показывть одну звезду с заполнением в рейтинге
	  "REVIEW_FULL" => "Y" 			# Показывать достоинтва и недостатки
	  )
	);
В reviews.list режим подгрузки отзывов без перезагрузки страницы включается при параметрах "DISPLAY_TOP_PAGER" и "DISPLAY_BOTTOM_PAGER" равных "N". 
Если один из указанных параметров установлен в "Y" - будет использоваться стандартная постраничная навигация.

Настройка

Настройка модуля производится на странице "Настройки" > "Настройка модулей" > "Отзывы"

Использование

Список всех отзывов Вы найдете на странице "Сервисы" → "Отзывы" > "Отзывы"
По умолчанию для новых отзывов стоит опция "премодерация"
Поэтому, чтобы новый отзыв появился на сайте, его необходимо перевести в статус "Допущен"

Настройка модуля

Настройка модуля производится на странице "Настройки" > "Настройка модулей" > "Отзывы"

События

OnReviewsLoadВозникает при подгрузке отзывов с использованием ajax. Событие позволяет модифицировать передаваемые в шаблон данные и при необходимости добавить новые.

Пример
AddEventHandler("wsm.reviews", "OnReviewsLoad", array("MyClass", "OnReviewsLoadHandler"));

class MyClass
{
   function OnReviewsLoadHandler(&$Data)
   {
	foreach($Data as $index => $review)
	{
		# Добавляем новые данные
		$Data[$index]['INFORMATION'] = '....';
	}
   }
}

Примеры

Вывод рейтинга в списке товаров

Разместим код подсчета рейтинга в файле result_modifier.php шаблона catalog.section

global $APPLICATION;

if(CModule::IncludeModule('wsm.reviews') && is_array($arResult["ITEMS"]))
{
	//подключение стилей
	$APPLICATION->SetAdditionalCSS("/bitrix/themes/.default/wsm.reviews_stars.css"); 	 	
	foreach($arResult["ITEMS"] as $cell => $arElement)
	{
 		//получение рейтинга
		$res = WSMReviewsMessages::GetRating($arElement['ID']); 		 		
		$arElement["RATING"] = $res['RATING']; 		
		$arElement["RATING_USER_COUNT"] = $res['USER_COUNT']; 		
		$arElement["RATING_WIDTH"] = round(($res['RATING'] / 5 * 100)); 		
		$arElement["RATING_TITLE"] = ""; 		 		

		if($arElement["RATING"] > 0) 		
		{ 			
			$arElement["RATING_TITLE"] = $arElement["RATING"]." "; 			
			$arElement["RATING_TITLE"] .= ' от ' .$arElement["RATING_USER_COUNT"]." "; 
			$arElement["RATING_TITLE"] .= ($arResult["USER_COUNT"] == 1 || ($arResult["USER_COUNT"]-1) % 10 == 0) ? "пользователя" : "пользователей" ; 		
		} 		
		
		$arResult["ITEMS"][$cell] = $arElement; 	
	}
 }


чтобы вывести рейтинг для каждого элемента в файле template.php шаблона компонента catalog.section

внутри цикла <?foreach($arResult["ITEMS"] as $cell=>$arElement):?>

необходимо разместить верстку


<div class="wsm_reviews_rating" title="<?=$arElement["RATING_TITLE"]?>">
	<span class="star">
		<span style="width:<?=$arElement["RATING_WIDTH"]?>%;"></span>
	</span>
</div>

Ссылки

Техническая поддержка

Техническая поддержка модулей для 1С-Битрикс
осуществляется при обращении на Email: support@zent.tech

Вы можете заказать разработку модуля для 1С-Битрикс под ваши требования

Все модули