Битрикс сортировка по наличию

Битрикс сортировка по наличию

При использовании торговых предложений в Битриксе при разработке каталога возникает логичный вопрос: как отсортировать/отфильтровать товары с торговыми предложениями по наличии и по цене? Из-за того, что для таких товаров цена и наличие записывается не у товаров, а у предложений, скрытие из листингов товаров с нулевым остатком приводит к исчезновению из листинга товаров с торговыми предложениями.

Пока разработчики битрикса не добавили такие возможности в ядро(но они обещают доработать этот функционал), используем свой код для реализации этих функций.

Наличие на складе

Для сортировки и фильтрации по наличию используем стандартное поле модуля catalog QUANTITY(CATALOG_QUANTITY), при изменении наличия торговых предложений находим остальные предложения у товара и обновляем его доступное количество:

После этого мы может товар с торговыми предложениями наравне с обычными товарами сортировать или фильтровать по полям CATALOG_QUANTITY и CATALOG_AVAILABLE, а также использовать параметр HIDE_NOT_AVAILABLE компонента bitrix:catalog или bitrix:catalog.section:

Скрыть отсутствующие товары:

Отсортировать по популярности, но показать сначала товары в наличии, затем отсутствующие:

Отсортировать по наличию:

Для сортировки и фильтрации по цене товаров используем свойство MINIMUM_PRICE, в нём уже из коробки записывается минимальная цена среди торговых предложений. Если у всех торговых предложений одинаковая цена, можно воспользоваться облегчённым вариантом, который при изменении цены товара/торгового предложения обновляет свойство PRICE у товара(свойство нужно создать самому):

Для сортировки по цене, например, по убыванию указываем параметры bitrix:catalog или bitrix:catalog.section:

В кусках кода используются константы CATALOG_IBLOCK_ID и OFFERS_IBLOCK_ID, их нужно объявить или заменить на ID соответственно инфоблока товаров и товарных предложений.

Я не претендую на уникальность или безупречность приведенных решений, код представлен как есть.

До сих пор в ядре CMS 1C-Битрикс не добавлена возможность сортировки по наличию товара на складе, т.е. не по количеству, а по наличию — факту того если ли товар на складе или он отсутствует. Пока на просьбу клиента, чтобы при любой сортировке выдачи каталога товаров те товары, которых нет на складе были в конце списка приходится решать с помощью нижепредставленного велосипеда. 1. Нужно создать свойство в информационном блоке, где должна быть такая фильтрация — IS_AVAILABLE . Это свойство можно сделать просто символьного типа. Оно у нас будет принимать всего 2 значения: 0 — если товара нет на складе, 1- если товар есть на складе.

Читайте также:  Согласно вашего желания мы освободили

2. Нужно сделать так, чтобы при заведении нового товара или обновлении старого товара свойство IS_AVAILABLE автоматически обновлялось. Этого можно добиться, добавив такой код в файл /bitrix/php_interface/init.php (либо в файл /bitrix/php_interface/Ваш_идентификатор_сайта/init.php при использовании многосайтовости) .

3. Нужно добавить сортировку в компонент bitrix:catalog.section и поставить ее первой. Сортировка должна быть по PROPERTY_IS_AVAILABLE , направление DESC.

4. Если у вас уже есть записанные товары и вы не хотите их пересохранять вручную, чтобы свойство перезаписалось, то нужно запустить примерно такой скрипт:

В этом скрипте вам нужно заменить в $arFilter = Array(«IBLOCK_ID»=>1); идентификатор инфоблока, на тот, который должен быть у вас.

После этого у вас должна заработать эта сортировка.

  • Интернет-магазины
  • Аспро: Next
  • Аспро: Интернет-магазин
  • Аспро: Крутой шоп
  • Аспро: Маркет
  • Аспро: Оптимус
  • Аспро: Шины и диски 2.0
  • Аспро: Шины и диски, интернет-магазин
  • Корпоративные сайты
    • Аспро: Приорити
    • Аспро: Корпоративный сайт 2.0
    • Аспро: Digital-компания
    • Аспро: Корпоративный сайт
    • Аспро: Корпоративный сайт современной компании
    • Аспро: Корпорация
    • Аспро: Курорт
    • Аспро: Ландшафт
    • Аспро: Медицинский центр 2.0
    • Аспро: Сайт медицинского центра
    • Аспро: Стройка
    • Модули
      • Аспро: Кредитный калькулятор
      • Аспро: Универсальный импорт
      • Аспро: Шинный калькулятор
      • 1С-Битрикс
        • Общее
        • Как настроить сортировку так, чтобы отсутствующие товары были всегда в конце списка?

          Инструкция

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

          В режиме редактирования переключитесь на пункт «Настройки списка» и установите значения для полей, как показано на скриншоте.

          • По какому полю сортируем товары в разделе – другое
          • Поле — CATALOG_QUANTITY
          • Порядок сортировки товаров в разделе – по убыванию.

          В административной части сайта перейдите в Рабочий стол → Настройки → Настройки продукта → Настройки модулей → Торговый каталог. Найдите группу настроек «Значения параметров товаров по умолчанию» и нажмите кнопку «Изменить».

          Читайте также:  Самая простая стиральная машина автомат для пенсионеров

          В открывшемся окне настроек активируйте параметр «Включить количественный учет» и уберите галочку в поле «Разрешить покупку при отсутствии товара».

          Для товаров, которые нужно сортировать таким образом, должны быть правильно установлены параметры сортировки.

          Чтобы проверить эти настройки, в публичной или административной части сайта войдите в режим редактирования карточки товара. Переключитесь на вкладку «Торговый каталог».

          Переключись на подвкладку «Параметры» и в группе полей «Параметры» проверьте, чтобы значения отмеченных полей соответствовали значениям на скриншоте:

          • Включить количественный учет – по умолчанию (да)
          • Разрешить покупку при остуствии товара (включая разрешение отрицательного количества товара) – по умолчанию (нет)
          • Разрешить подписку при отсутствии товара – по умолчанию (да).

          Перейдите в Рабочий стол → Настройки → Настройки продукта → Настройки модулей → Торговый каталог. В группе полей «Карточка товара» уберите галочку в поле «Показывать вкладку Торговый каталог для товаров, имеющих торговые предложения». Сохраните изменения.

          Итог: отсутствующие на складах товары выводятся в конце списка независимо от того, как выполняется сортировка – по цене или алфавиту.

          Ссылка на основную публикацию
          Adblock
          detector