@VladimirBolotov

Как запрограммировать слайдер на битрикс?

Добрый день!

Мне нужно сделать небольшой слайдер.
Использую Catalog.section
Вот кусок из result modifire для слайдера.
foreach ($arResult["PROPERTY_IMAGES_VALUE"] as $arImages) 
{
$arResult["IMAGES"][] = CFile::GetFileArray($arImages);
}

IMAGES - одно из свойст инфоблока для добавленных картинок
Вот template
<?foreach ($arResult["ITEMS"] as $arItem) {?>
<div class = "slider" id = "slider_images-<?=$arItem["ID"]?>">
    <div class = "slider">
        <?foreach ($arItem["IMAGES"] as $arPhoto) {
            ?><div><img src="<?=$arPhoto["SRC"]?>"></div><?
        }?>
    </div>
    <div class = "s-navigation">
        <?foreach ($arItem["IMAGES"] as $arPhoto) {
            ?><div><img src="<?=$arPhoto["SRC"]?>"></div><?
        }?>
    </div>
</div>
    <?
    }?>


Но в итоге, мне ничего не выдает. Пусто. Кода юзаю
var_dump($arResult["IMAGES"])
в result modifire Он выдает мне Null.
  • Вопрос задан
  • 544 просмотра
Решения вопроса 1
workDNK
@workDNK
Разработчик сайтов на 1С-Битрикс
Вы используете catalog.section, у которого, во-первых, выборка элементов находится в $arResult["ITEMS"], а во-вторых, PROPERTY_IMAGES_VALUE используется, если вы через CIBlockElement::GetList сами будете делать выборку свойств (но поскольку изображения хранятся во множественном свойстве, то решается это обычно не через CIBlockElement::GetList, а через CIBlockProperty::GetList).

Поскольку вы обрабатываете уже готовую выборку элементов в result_modifier.php, то доступ к значениям свойств элементов идет не через PROPERTY_IMAGES_VALUE, а так: ["PROPERTIES"]["IMAGES"]["VALUE"].

Т.е. в общем случае для вашего варианта нужна такая конструкция:

foreach ($arResult["ITEMS"] as &$arItem) 
{
	$arItem["IMAGES"] = array();
	foreach ($arItem["PROPERTIES"]["IMAGES"]["VALUE"] as $imageId) 
	{
		$arItem["IMAGES"][] = CFile::GetFileArray($imageId);
	}
}
unset($arItem);


и в подобных ситуациях удобнее посмотреть весь результат, чтобы увидеть, какие данные где находятся:
var_dump($arResult);
или
print_r($arResult);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы