Иногда возникает достаточно распространённая проблема — нельзя изменить количество товара в корзине Битрикса, т.е. поставить больше 1 шт, решение простое, это деактивировать опцию Продажа контента в настройках Торгового каталога для инфоблока:
А что если на сайте реализована Продажа контента с вариантами подписки и нужно снять данное ограничение? И дективация этой настройки просто отключит функционал всего механизма платной подписки.
К сожалению решение не столь изящное, да и в целом не правильное, это редактировать сам модуль, но когда стоит задача? В целом для Битрикса это решение приемлемое, т.к. такие задачи и способы их решения встречаются часто, крайне.
Необходимо отредактировать файл модуля — /bitrix/modules/catalog/lib/product/catalogprovider.php
Найти приватный метод changeSubscribeProductQuantity класса CatalogProvider и закомментировать foreach:
/** * @param array $products * @param array $iblockProductMap * * @return array */ private static function changeSubscribeProductQuantity(array $products, array $iblockProductMap) { $resultList = $products; /*foreach ($iblockProductMap as $iblockId => $iblockData) { if ($iblockData['SUBSCRIPTION'] != 'Y') continue; if (empty($iblockData['PRODUCT_LIST'])) continue; foreach($iblockData['PRODUCT_LIST'] as $productId) { if (isset($resultList[$productId])) { if ( !empty($resultList[$productId]['QUANTITY_LIST']) && is_array($resultList[$productId]['QUANTITY_LIST']) ) { foreach (array_keys($resultList[$productId]['QUANTITY_LIST']) as $index) { $resultList[$productId]['QUANTITY_LIST'][$index] = 1; } } } } }*/ return $resultList; }
Хочу предупредить, что это вредный совет, накладывает ограничения на обновление платформы, и в других версиях метод changeSubscribeProductQuantity могут изменить, что частая практика разработчиками Битрикса.
Всё на ваш страх и риск.