Как извлечь изображение корзины в Битрикс 1С?

Добрый день! Как я могу получить изображение корзины? Я не могу разобраться, как его вывести, так как в переменной $elem отсутствует поле с изображением. Буду благодарен за любую помощь! <br/> <br/> <pre><code>$basket = CSaleBasket::GetList(
    array("NAME"=&gt;"ASC", "ID"=&gt;"ASC"),
    array("FUSER_ID" =&gt; CSaleBasket::GetBasketUserID(),"LID" =&gt; SITE_ID, "ORDER_ID" =&gt; "NULL"),
    false,
    false,
    false
);
while($elem = $basket-&gt;getNext()){
 'WEIGHT'    =&gt; $elem['WEIGHT'],
 'NOTES'=&gt;$elem['NOTES'],
'DETAIL_PICTURE'=&gt;$elem['DETAIL_PICTURE'],
    );

}?&gt;</code></pre>
  • 11 сентября 2024 г. 15:53
Ответы на вопрос 2
В Битрикс изображения товаров, добавленных в корзину, не хранятся непосредственно в самом объекте корзины. Вместо этого для каждого товара в корзине вы можете получить информацию о товаре (включая его изображение) по `PRODUCT_ID`. Для этого вам нужно воспользоваться классом `CCatalogProduct` или `CIBlockElement`, в зависимости от того, как у вас настроена база товаров.

Вот пример, как можно получить картинку товара в корзине:

```php
$basket = CSaleBasket::GetList(
    array("NAME" => "ASC", "ID" => "ASC"),
    array("FUSER_ID" => CSaleBasket::GetBasketUserID(), "LID" => SITE_ID, "ORDER_ID" => "NULL"),
    false,
    false,
    false
);

while ($elem = $basket->getNext()) {
    // Получим ID товара из корзины
    $productID = $elem['PRODUCT_ID'];

    // Получаем информацию о товаре
    $res = CIBlockElement::GetList(
        array(),
        array("ID" => $productID),
        false,
        false,
        array("ID", "NAME", "DETAIL_PICTURE", "PREVIEW_PICTURE")
    );

    if ($arItem = $res->GetNext()) {
        // Получаем детальное изображение или изображение превью
        $imageID = $arItem['DETAIL_PICTURE'] ? $arItem['DETAIL_PICTURE'] : $arItem['PREVIEW_PICTURE'];

        // Получаем URL изображения
        if ($imageID > 0) {
            $img = CFile::GetPath($imageID);
        }

        // Добавляем необходимые данные в массив
        $data[] = array(
            'PRODUCT_ID' => $productID,
            'NAME' => $arItem['NAME'],
            'WEIGHT' => $elem['WEIGHT'],
            'NOTES' => $elem['NOTES'],
            'IMAGE' => $img, // URL изображения
        );
    }
}

// Теперь массив $data содержит данные о товарах в корзине, включая URL изображений.
```

В этом коде мы:

1. Получаем список товаров в корзине.
2. Для каждого товара из корзины получаем его информацию (включая изображение) из инфоблока.
3. Собираем все нужные данные в массив, который можно использовать для дальнейшей работы (например, отображения на сайте).

Не забудьте, что при работе с изображениями и файлами в Битрикс, вам также может понадобиться проверять, правильно ли настроены права доступа к файлам.
CSaleBasket::GetList - не отдает изображение 
вам надо самостоятельно "добрать" его по PRODUCT_ID
примерно так

while($elem = $basket->getNext()){
$el = CIBlockElement::GetList( [], ["ID"=>$elem['PRODUCT_ID']], false, false, ["ID","DETAIL_PICTURE"])->fetch(); 
if($el['DETAIL_PICTURE']>0) $file = CFile::ResizeImageGet($el['DETAIL_PICTURE'], array('width'=>150, 'height'=>150), BX_RESIZE_IMAGE_PROPORTIONAL, true); 
}

в $file['src'] - будет путь к файлу
Похожие вопросы