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

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

Задача: показать остаток каждого товара в корзине 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
}

Блог-note: заметки разработчика

Создание раздела инфоблока при регистрации пользователя в Битрикс

Например вам нужно выводить информацию исключительно для определенного пользователя. Само собой, это можно сделать с пом...

Фотогалерея на базе компонента новостей, с fancybox.

Это заметка обновление к очень старой, уже имеющейся на сайте. Сделаем что-то типа фотогалереи на базе встроеннного в би...

Дополнительные опции/услуги, добавляемые в корзину, в карточке товаров

Задача: в детальной карточке товара сделать возможность добавления услуги или опции, при добавлении товара в корзину.

Удаление товара из корзины по кнопке "минус" если остался 1 товар

Задача: когда в корзине осталась одна единица товара, нужно удалять товар по нажатию на кнопку "минус". Остави...

Пункты меню из разделов инфоблока Битрикс

В принципе это стандартная возможность системы управления битрикс, но почему-то часто спрашивают как это сделать. Возмож...

Время на БД и веб сервере отличается на 3600 секунд, тест Битрикс

Достаточно часто, при проверке параметров системы, в Битрикс, можно увидеть одну из ошибок: Время на БД и на сервере- Вр...

Как подобрать редакцию Битрикс под задачи

Последнее время, все чаще, при общении с заказчиками, сталкиваюсь с вопросом "— Какая редакция 1С-Битрикс нужна дл...

XML в формате Commerce ML-2, города России и Мира, для выгрузки в инфоблок Битрикс

Подвернулась задачка, создать инфоблок для Битрикс, в котором будут просто города России и мира в виде элементов инфобло...

Кастомизация компонента восстановления пароля bitrix:system.auth.forgotpasswd

Достаточно часто спрашивают как кастомизировать компонент восстановления пароля пользователя. Типовая задача, это измени...