ОБНОВЛЕНИЕ: Статья не актуальна, функционал вышел в версии 16.0.3 модуля "торговый каталог"
Здравствуйте.
Сначала немного теории. В битриксе у товара есть флаг CATALOG_AVAILABLE, который показывает, доступен товар для покупки или нет.
На основе чего рассчитывается этот параметр?
Флаг CATALOG_AVAILABLE устанавливается в значение Y (доступен), если:
1. Включен количественный учет (с учетом глобальных настроек в модуле «Торговый каталог»).
2. Доступное количество товара больше 0 (не путать с количеством на складе).
3. Если количество товаров 0, но им разрешена покупка при 0 (с учетом глобальных настроек в модуле «Торговый каталог»).
Иначе устанавливается флаг недоступности.
Товар:
Модуль "торговый каталог":
Внимание! На данный момент, флаг CATALOG_AVAILABLE корректно устанавливается только для простых товаров, у которых нет торговых предложений.
Все ниже описанное может вам помочь, если у вас простой каталог без торговых предложений.
Теперь задача. У вас есть на сайте товары, которые недоступны для покупки (нулевое количество, например).
Если сделать экспорт простого каталога в Яндекс, то получится файл, где у товаров которого будут стоят атрибуты available=«true" если товар доступен для покупки и available=«false», если товар недоступен для покупки.
Вот пример такого файла:
Для наглядности у меня всего 2 товара: один в наличии, другой нет.
А что делать, если вы хотите, чтобы в файл экспорта вообще не попадали товары, которые недоступны для покупки? На данный момент выход один - кастомизация скрипта выгрузки.
Давайте приступать.
Для начала нужно скопировать стандартные скрипты, так как мы помним, что ядро продукта изменять нельзя.
Открываем админку. Заходим в папку /bitrix/modules/catalog/load
Находим 2 файла yandex_run.php и yandex_setup.php, отмечаем оба файла галочкой и копируем их в папку /bitrix/php_interface/include/catalog_export
Переименовываем файлы в yandex_custom_run.php и yandex_custom_setup.php соответственно.
Теперь у нас в админе появился новый способ выгрузки, используя наши скопированные скрипты.
Открываем файл /bitrix/php_interface/include/catalog_export/yandex_custom_run.php в режиме редактирования php и ищем строку:
у меня это 1030 строка (версия модуля торговый каталог 15.0.5).
Прям перед этой строкой вставляем строку:
Должно быть так:
Сохраняем изменения. Теперь делаем выгрузку через наш файл и видим, что в файле отсутствуют товары, которые недоступны для покупки.
А что делать тем, у кого используются торговые предложения? Общего решения на данный момент нет, но пока проблема может быть решена опять же только через кастомизацию. Например, можно создать свойство инфоблока, в котором хранить признак доступности товара с торговыми предложениями. В зависимости от значения свойства, устанавливать соответствующий флаг. Минус в том, что нужно следить за актуальностью значений свойства во всех товарах.
Здравствуйте.
Сначала немного теории. В битриксе у товара есть флаг CATALOG_AVAILABLE, который показывает, доступен товар для покупки или нет.
На основе чего рассчитывается этот параметр?
Флаг CATALOG_AVAILABLE устанавливается в значение Y (доступен), если:
1. Включен количественный учет (с учетом глобальных настроек в модуле «Торговый каталог»).
2. Доступное количество товара больше 0 (не путать с количеством на складе).
3. Если количество товаров 0, но им разрешена покупка при 0 (с учетом глобальных настроек в модуле «Торговый каталог»).
Иначе устанавливается флаг недоступности.
Товар:
Модуль "торговый каталог":
Внимание! На данный момент, флаг CATALOG_AVAILABLE корректно устанавливается только для простых товаров, у которых нет торговых предложений.
Все ниже описанное может вам помочь, если у вас простой каталог без торговых предложений.
Теперь задача. У вас есть на сайте товары, которые недоступны для покупки (нулевое количество, например).
Если сделать экспорт простого каталога в Яндекс, то получится файл, где у товаров которого будут стоят атрибуты available=«true" если товар доступен для покупки и available=«false», если товар недоступен для покупки.
Вот пример такого файла:
Для наглядности у меня всего 2 товара: один в наличии, другой нет.
А что делать, если вы хотите, чтобы в файл экспорта вообще не попадали товары, которые недоступны для покупки? На данный момент выход один - кастомизация скрипта выгрузки.
Давайте приступать.
Для начала нужно скопировать стандартные скрипты, так как мы помним, что ядро продукта изменять нельзя.
Открываем админку. Заходим в папку /bitrix/modules/catalog/load
Находим 2 файла yandex_run.php и yandex_setup.php, отмечаем оба файла галочкой и копируем их в папку /bitrix/php_interface/include/catalog_export
Переименовываем файлы в yandex_custom_run.php и yandex_custom_setup.php соответственно.
Теперь у нас в админе появился новый способ выгрузки, используя наши скопированные скрипты.
Открываем файл /bitrix/php_interface/include/catalog_export/yandex_custom_run.php в режиме редактирования php и ищем строку:
$rsItems = CIBlockElement::GetList(array(), $arFilter, false, false, $arSelect); |
у меня это 1030 строка (версия модуля торговый каталог 15.0.5).
Прям перед этой строкой вставляем строку:
$arFilter['CATALOG_AVAILABLE'] = "Y"; |
Должно быть так:
… $cnt = 0; $arFilter['CATALOG_AVAILABLE'] = 'Y'; $rsItems = CIBlockElement::GetList(array(), $arFilter, false, false, $arSelect); … |
Сохраняем изменения. Теперь делаем выгрузку через наш файл и видим, что в файле отсутствуют товары, которые недоступны для покупки.
А что делать тем, у кого используются торговые предложения? Общего решения на данный момент нет, но пока проблема может быть решена опять же только через кастомизацию. Например, можно создать свойство инфоблока, в котором хранить признак доступности товара с торговыми предложениями. В зависимости от значения свойства, устанавливать соответствующий флаг. Минус в том, что нужно следить за актуальностью значений свойства во всех товарах.