101  /  382
Справочник

Пример. Вывод голосования

Просмотров: 36873
Дата последнего изменения: 07.11.2023
Роберт Басыров
Сложность урока:
2 уровень - несложные понятия и действия, но не расслабляйтесь.
1
2
3
4
5
Недоступно в лицензиях:
Ограничений нет

Задача:

  1. Выдать голосование не в детальном товаре, а на странице со списком товаров.
  2. Выдать ее на 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
);?>

47
Курсы разработаны в компании «1С-Битрикс»

Если вы нашли неточность в тексте, непонятное объяснение, пожалуйста, сообщите нам об этом в комментариях.
Развернуть комментарии