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

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

Задача состоит в том, чтобы запретить указание количества товара, добавляемого в корзину, в определенных разделах каталога. По умолчанию указание количества товара включено.

Создаем пользовательское поле раздела

Для начала, открываем настройки любого раздела каталога и создаем пользовательское поле "Запрет ввода количества" с типом "Да/Нет". По умолчанию, я установил значение "Нет" и задал ему код "UF_NOT_USE_PRODUCT_QUANTITY".

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

Выводим пользовательское поле раздела в section.php

В настройках компонента каталога указываем параметр "Разрешить указание количества товара:", который будет доступен для пользователя. Этот параметр станет значением по умолчанию, если для раздела не указано ииное в поле "Запрет ввода количества".

Выводим пользовательское поле раздела в section.ph

Чтобы получить значение созданного поля "Запрет ввода количества" в файле section.php комплексного шаблона каталога, мы будем использовать метод CIBlockSection::GetList. В качестве параметров этого метода будут ID инфоблока, который мы получим из параметра компонента, и ID текущего раздела, который мы получим с помощью метода CIBlockFindTools::GetSectionID.

$arResult['SECTION_ID'] = CIBlockFindTools::GetSectionID(
    $arResult['VARIABLES']['SECTION_ID'],
    $arResult['VARIABLES']['SECTION_CODE'],
    array(
        'IBLOCK_ID' => $arParams['IBLOCK_ID']
    )
);
$sectionResult = CIBlockSection::GetList(
    false,
    array(
        "IBLOCK_ID" => $arParams["IBLOCK_ID"],
        "ID" => $arResult["SECTION_ID"]
    ),
    false,
    array(
        'ID',
        'UF_NOT_USE_PRODUCT_QUANTITY'
    )
);
while ($sectionProp = $sectionResult->GetNext()) {
    if ($sectionProp['UF_NOT_USE_PRODUCT_QUANTITY'] == 1) {
        $arParams['USE_PRODUCT_QUANTITY'] = 'N';
    }
}	

Здесь мы получаем значение поля раздела 'UF_NOT_USE_PRODUCT_QUANTITY' (Запрет ввода количества), и если его значение равно "1" (что означает "Да"), то переназначаем параметр настройки компонента $arParams['USE_PRODUCT_QUANTITY'] на значение 'N'.

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

И по сути, тоже самое делаем в карточке товара: просто вставляем код приведенный выше в файле element.php комплексного шаблона каталога

Так же, если вам нужны все поля раздела включая все пользовательские поля, можете воспользоваться заметкой Получить все поля раздела, включая пользовательские, в section.php

Стоимость разработки на 1С-Битрикс:

Индивидуальная разработка магазина

от 500 000 руб. от 5-ти недель

Разработка магазина на 1С-Битрикс с нуля. Дизайн, сборка и оптимизация производительности под конкретный проект и требования. Реализация любого функционала без ограничений готовых решений.

Запуск сайта на готовом решении

от 100 000 руб. от 7-ми дней

Вариант для тех, кто не хочет тратить много средств на индивидуальный проект, и не имеет серьезных требований к сайту. Магазин, быстро запускается на базе одного из 200-та готовых решений.

Мобильное приложение

от 500 000 руб. от 1-го месяца

Разработка кроссплатформенного мобильного приложения, которое не уступает нативным решениям как в производительности, так и пользовательском опыте. Публикуется в AppStore, GooglePlay и RuStore

Сайт компании

от 350 000 руб. от 1-го месяца

Корпоративный сайт с информационными разделами, каталогом товаров или услуг. Включает формы обратной связи карточек каталога, любое количество статичных и динамичных разделов.

Инфресурс

от 400 000 руб. от 5-ти недель

Информационный ресурс любой сложности. Сайт для СМИ, городской портал или многопользовательская доска объявлений. Внутренние форумы, блоги- по необходимости.

Лечение сайтов от вирусов

от 40 000 руб. от 2-х дней

Выполню полную проверку сайта и окружения. В случае обнаружения вирусов проведу полный комплекс лечения проекта и закрытия лазеек.