Bitrix. Добавить оценку товару или где находится таблица с данными рейтинга

406
10 июля 2017, 18:20

Всем привет!
Проблема следующая:
1) необходимо добавить оценку к товару через API.Bitrix, если такое возможно;
2) либо в какой таблице в БД хранятся данные рейтинга товара.
Речь идет про iblock.vote.
Ни поиск, ни документация ответа не дали :(

Answer 1

Вы уже почти ответили на свой вопрос сами=)

Для рейтинга используется стандартный компонент - bitrix.vote

Для того, что бы он заработал, достаточно в шаблоне со списком товаров (например bitrix.section) вызвать его и передать ID товара, ID инфоблока и код товара. Все эти значения уже есть в $arResult если Вы используете стандартный компонент. Если же у Вас самописный компонент, то добавьте недостающие значения.

Пример вызова компонента:

<?$APPLICATION->IncludeComponent("bitrix:iblock.vote","stars",Array(
        "IBLOCK_TYPE" => "",
        "IBLOCK_ID" => $arItem['IBLOCK_ID'], //ID инфоболка
        "ELEMENT_ID" => $arItem['ID'], //ID товара
        "ELEMENT_CODE" => $arItem['CODE'], //код товара
        "MAX_VOTE" => "5",
        "VOTE_NAMES" => array("0","1","2","3","4"),
        "SET_STATUS_404" => "N",
        "MESSAGE_404" => "",
        "CACHE_TYPE" => "A",
        "CACHE_TIME" => "3600"
    )
);?>

У компонента bitrix.vote есть несколько стандартных шаблонов (ну или можно написать свой):

  • .default - страшный шаблон с селектом и кнопкой "голосовать" (не работает через ajax)
  • ajax - выбор рейтинга квадратиками
  • ajax_photo - хз, у меня не заработал
  • flat - шаблон с выбором рейтинга "звездочками"
  • stars - самый адкеватный шаблон (имхо), тоже со зведочкам

UPD: Касательно второго вопроса: Где же все таки хранятся рейтинги к товарам в БД. Если посмотреть код компонента iblock.vote, то видно, что он оперирует свойствами инфоблока.

Т.е. в инфоблок добавляются следующие PROPERTY:

  • vote_count - Количество проголосовавших
  • vote_sum - Сумма оценок
  • rating - rating

И далее при добавления рейтинга работает следующая логика:

<?
$arProperties["vote_count"]["VALUE"] = intval($arProperties["vote_count"]["VALUE"])+1;
$arProperties["vote_sum"]["VALUE"] = intval($arProperties["vote_sum"]["VALUE"])+$RATING;
$arProperties["rating"]["VALUE"] = round(($arProperties["vote_sum"]["VALUE"]+31.25/5*$arParams["MAX_VOTE"])/($arProperties["vote_count"]["VALUE"]+10),2);
?>

Можно воспользоваться ей для добавления рейтинга например через компонент комментариев

READ ALSO
Помогите с перегрузкой оператора / в с++

Помогите с перегрузкой оператора / в с++

Не могу понять в чём проблема создал класс добавил в него перегрузку оператора / и в функции пытаюсь его использовать но компилятор выдает...

158
Какие книги актуальные по OpenGL 4.5(на русском)

Какие книги актуальные по OpenGL 4.5(на русском)

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

240
Проблема с выделением памяти С++. malloc

Проблема с выделением памяти С++. malloc

В программе стали происходит какие-то рандомные(там где в принципе упасть не может) паденияВот один из крэшай меня интересует

272