Показать доступный остаток каждого товара в корзине 1С-Битрикс

Просмотров: 1552

Задача: показать остаток каждого товара в корзине 1С-Битрикс, что бы покупатель сразу знал предельное колличество товара для покупки.

Показать доступный остаток каждого товара в корзине 1С-Битрикс

Добавление данных для вывода в корзине

Для начала скопируйте шаблон корзины в шаблон своего сайта (если еще не сделали этого) и откройте на редактирование файл mutator.php, который отвечает за накопление данных о каждом товаре в корзине.

Перед строкой $result['BASKET_ITEM_RENDER_DATA'][] = $rowData; (конечный массив с накопленными данными) добавьте следующий код:

$arProduct = CCatalogProduct::GetByID($rowData['PRODUCT_ID']);
$quantity = $arProduct['QUANTITY'];
$rowData['PRODUCT_QUANTITY'] = $quantity;

Здесь, с помощью метода CCatalogProduct::GetByID получаем всю информацию о конкретном товаре по его ID и дополняем массив $rowData['PRODUCT_QUANTITY'] данными о доступном количестве товара.

CCatalogProduct::GetByID: Метод по коду товара ID возвращает массив параметров товара (которые относятся к товару как к таковому) или false, если код товара задан некорректно или отсутствует запись в базе. Статический метод.

Выводим данные в шаблоне Mustache

За вывод каждого товара в шаблоне корзины отвечает файл, находящийся по пути /шаблон_корзины/js-templates/basket-item.php. Открываем его и в нужном месте, где хотим вывести остаток товара, добавляем:

Доступно:
{{PRODUCT_QUANTITY}} 
{{MEASURE_RATIO}}

Собственно: вывели количество товара и его единицу измерения. На этом все.

Михаил Базаров 01.05.2023
Аналогом метода CCatalogProduct::GetByID, на D7, является метод \Bitrix\Catalog\Model\Product::getById. Этот метод возвращает объект модели "Продукт" (Product) с указанным идентификатором.

Пример использования:

Код
use Bitrix\Catalog\Model\Product;
$product = Product::getById($productId);

if ($product)
{
    // Действия с объектом $product
}