Возможно ли заниматься чем-нибудь более ужасным чем делать сайт на битриксе? Не важно =)
Есть задача: показать картинки товарных позиций в корзине.
Не знаю насчет 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 данные об изображениях и пишем их в массив корзины обратно.
Далее на сайте мы уже просто выводим картинки как и обычно.
Данный способ хорош тем, что мы не лезем в исходный код компонента и соответственно при обновлении ядра компонент корзины у нас тоже обновится.