Битрикс: вывести изображения у позиций в корзине

Возможно ли заниматься чем-нибудь более ужасным чем делать сайт на битриксе? Не важно =)

Есть задача: показать картинки товарных позиций в корзине.

Не знаю насчет 12 версии, но в 11 по умолчанию данной возможности насколько я понял нет.

Что нам необходимо?

В битриксе есть такая вещи как result_modifer.php

Если вкратце, то это файл, который необходимо поместить в папку шаблона компонента. Данный файл может менять данные, которые компонент отдает в шаблон.

Ну и далее в принципе все просто, нам нужно взять все позиции, которые есть в корзине, выбрать для них изображения, отдать новый набор данных в шаблон и вывести в шаблоне.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
 
function getCartItemIndexByProductId($items, $productId)
{
 foreach ($items as $key => $item) {
 if ($item['PRODUCT_ID'] == $productId) {
 return $key;
 }
}
 return false;
}
 
if (!empty($arResult["ITEMS"]["AnDelCanBuy"])) {
$arIds = array();
foreach ($arResult["ITEMS"]["AnDelCanBuy"] as $arItem) {
$arIds[] = array('=ID' => $arItem['PRODUCT_ID']);
}
$arFilter = array(
array_merge(
array(
'LOGIC' => 'OR',
),
$arIds
),
);
$arSelect = array(
"ID",
"DETAIL_PICTURE",
"PREVIEW_PICTURE",
);
$rsElements = CIBlockElement::GetList(array(), $arFilter, false, array(), $arSelect);
while ($obElement = $rsElements->GetNextElement()) {
$arItem = $obElement->GetFields();
$cartItemIndex = getCartItemIndexByProductId($arResult['ITEMS']['AnDelCanBuy'], $arItem['ID']);
if ($cartItemIndex !== false) {
$arResult["ITEMS"]["AnDelCanBuy"][$cartItemIndex]["PREVIEW_PICTURE"] = CFile::GetFileArray($arItem["PREVIEW_PICTURE"]);
$arResult["ITEMS"]["AnDelCanBuy"][$cartItemIndex]["DETAIL_PICTURE"] = CFile::GetFileArray($arItem["DETAIL_PICTURE"]);
}
}
}

Итак,  в чем тут смысл? Мы берем все элементы корзины, выбираем по их ID данные об изображениях и пишем их в массив корзины обратно.

Далее на сайте мы уже просто выводим картинки как и обычно.
Данный способ хорош тем, что мы не лезем в исходный код компонента и соответственно при обновлении ядра компонент корзины у нас тоже обновится.

  1. Комментариев пока нет




YouTube бесплатно навести проклятие порчу