Просмотров: 36873
Дата последнего изменения: 07.11.2023
Сложность урока:
2 уровень - несложные понятия и действия, но не расслабляйтесь.
3
4
5
Недоступно в лицензиях:
Ограничений нет
Задача:
- Выдать голосование не в детальном товаре, а на странице со списком товаров.
- Выдать ее на AJAX стандартными средствами
В каталоге нет голосования. Зато оно есть в комплексном компоненте Новости, в детальном просмотре элемента.
Решение (для слабоподготовленного разработчика, методом копи-паст).
Первая часть задачи
В шаблоне комплексного компонента Новости находим такой код:
<?$APPLICATION->IncludeComponent(
"bitrix:iblock.vote",
"",
Array(
"IBLOCK_TYPE" => $arParams["IBLOCK_TYPE"],
"IBLOCK_ID" => $arParams["IBLOCK_ID"],
"ELEMENT_ID" => $ElementID,
"MAX_VOTE" => $arParams["MAX_VOTE"],
"VOTE_NAMES" => $arParams["VOTE_NAMES"],
"CACHE_TYPE" => $arParams["CACHE_TYPE"],
"CACHE_TIME" => $arParams["CACHE_TIME"],
),
$component
);?>
Вставляем этот код в шаблон компонента bitrix:catalog.top куда-нибудь, где он должен выводиться. Например, в таблицу после вывода <?=$arElement["PREVIEW_TEXT"]?>.
Теперь нужно сделать, чтобы голосование выводилось для нужного нам элемента. Меняем строку:
"ELEMENT_ID" => $ElementID,
на
"ELEMENT_ID" =>$arElement["ID"],
Вторая часть задачи
В папке с шаблонами компонента bitrix:iblock.vote есть два шаблона: .default и ajax. Применяем второй. Вторая проблема тоже решена.
В итоге вызов компонента получился вот таким:
<?$APPLICATION->IncludeComponent(
"bitrix:iblock.vote",
"ajax",
Array(
"IBLOCK_TYPE" => $arParams["IBLOCK_TYPE"],
"IBLOCK_ID" => $arParams["IBLOCK_ID"],
"ELEMENT_ID" =>$arElement["ID"],
"MAX_VOTE" => $arParams["MAX_VOTE"],
"VOTE_NAMES" => $arParams["VOTE_NAMES"],
"CACHE_TYPE" => $arParams["CACHE_TYPE"],
"CACHE_TIME" => $arParams["CACHE_TIME"],
),
$component
);?>