Автоматизация
Внедрение битрикс24 бесплатно
При покупке лицензии у меня
Подробнее
Назад

Пропали цены и кнопка «В корзину» в списке товаров после обновления Битрикса? Решение для шаблонов Aspro

Пропали цены и кнопка «В корзину» в списке товаров после обновления Битрикса? Решение для шаблонов Aspro
Пропали цены и кнопка «В корзину» в списке товаров после обновления Битрикса? Решение для шаблонов Aspro

Если после обновления 1С-Битрикс вы столкнулись с ситуацией, когда на детальной странице товара цены и кнопка покупки отображаются нормально, а в списке товаров (категории, разделы, поиск, главная) они исчезли — эта статья для вас. Проблема массовая и типичная, особенно для пользователей популярных шаблонов Aspro (Next, Max, Шины и Диски 2.0) .

Мы разберем причины, покажем точные пути к файлам и предоставим проверенные примеры кода.

Симптомы: как выглядит проблема

Вы можете наблюдать следующую картину :

  1. В категории товаров нет цен, нет кнопки «В корзину». Блок с ценой может быть скрыт через display: none или просто отсутствовать в HTML-коде.

  2. При этом на странице самого товара всё работает идеально — цена есть, кнопка работает.

  3. В быстром просмотре товара (который обычно открывается в модальном окне) цены тоже отображаются корректно.

  4. Если временно переключить шаблон сайта на стандартный (например, .default), цены в списке появляются. Это ключевой признак того, что проблема именно в вашем рабочем шаблоне.

  5. В консоли браузера (F12) могут быть ошибки, связанные с BX is not defined или History.js, но их устранение стандартными методами (очистка кеша, подключение ядра) не возвращает цены.

Техническая причина: изменения в ядре Битрикс

Что изменилось в версии 23.300.0?

Начиная с версии 1С-Битрикс 23.300.0, в работе компонентов каталога произошли кардинальные изменения .

Раньше (до версии 23.300.0):
Компоненты catalog.section (список товаров) и catalog.element (детальная карточка) по умолчанию формировали в массиве $arResult старые, привычные для разработчиков поля:

  • $arResult["PRICES"] — массив с ценами.

  • $arResult["MIN_PRICE"] — минимальная цена.

  • $arResult["CATALOG_AVAILABLE"] — наличие товара.

После обновления до 23.300.0+:
Эти поля перестали формироваться по умолчанию . Вместо них компоненты начали использовать новый, более производительный формат данных — $arResult["ITEM_PRICES"]. Это сделано для оптимизации скорости работы.

Пример структуры старого и нового формата данных о цене :

Старый формат (до обновления) — доступен только с COMPATIBLE_MODE=Y:

[PRICES] => Array
(
    [1] => Array
        (
            [PRICE_ID] => 1
            [ID] => 826
            [CAN_ACCESS] => Y
            [CAN_BUY] => Y
            [VALUE] => 80
            [DISCOUNT_VALUE] => 80
            [PRINT_VALUE] => 80 руб.
            [PRINT_DISCOUNT_VALUE] => 80 руб.
        )
)

Новый формат (после обновления):

[ITEM_PRICES] => Array
(
    [0] => Array
        (
            [PRICE_TYPE_ID] => 1
            [BASE_PRICE] => 80
            [PRICE] => 80
            [CURRENCY] => RUB
            [DISCOUNT] => 0
            [PRINT_PRICE] => 80 руб.
            [RATIO_PRICE] => 80
        )
)

Почему сломались именно шаблоны Aspro?

Популярные шаблоны Aspro (Next, Max) были написаны до этого изменения. Их код продолжает искать в $arResult старые поля (PRICESMIN_PRICE). Так как после обновления они перестали приходить, шаблон не находит данные и не выводит цену и кнопку .

Почему на детальной странице и в быстром просмотре цена есть?
Потому что там используются другие компоненты (catalog.element или специальные компоненты Aspro), которые либо уже адаптированы, либо используют иные механизмы получения цен, не сломавшиеся при обновлении.

Решение: включаем режим совместимости

Что такое COMPATIBLE_MODE?

Это параметр компонентов каталога, который заставляет их работать в старом, совместимом режиме. Когда он установлен в значение Y, компонент дополнительно формирует в $arResult все старые поля (PRICESMIN_PRICE и т.д.), которые ожидают увидеть шаблоны Aspro .

Важный факт: На форуме разработчиков 1С-Битрикс официально подтверждено, что ключ PRICE формируется только при включении режима совместимости ('COMPATIBLE_MODE' => 'Y'), и рекомендуется переходить на новый формат, но для быстрого решения подходит включение совместимости .

Пошаговая инструкция по добавлению параметра

Вам нужно найти все места в шаблоне, где вызываются компоненты catalog.sectioncatalog.element и catalog.top, и добавить в их параметры строку "COMPATIBLE_MODE" => "Y".

Где искать файлы в Aspro Next / Max

На основе анализа типовой структуры шаблонов Aspro и найденных решений, вот точные пути к файлам (для Aspro Max пути могут быть аналогичными, с заменой aspro_next на aspro_max) :

Для списка товаров в категории (catalog.section):

  • /bitrix/templates/aspro_next/components/bitrix/catalog/main/page_blocks/list_elements_1.php (строка ~365)

  • /bitrix/templates/aspro_next/components/bitrix/sale.gift.main.products/main/template.php (строка ~42)

Для детальной страницы товара (catalog.element):

  • /bitrix/templates/aspro_next/components/bitrix/catalog/main/page_blocks/element_1.php (строка ~9)

  • /bitrix/templates/aspro_next/components/bitrix/catalog/main/page_blocks/element_2.php (строка ~10)

  • /bitrix/templates/aspro_next/components/bitrix/catalog/main/page_blocks/element_3.php (строка ~12)

  • /bitrix/templates/aspro_next/components/bitrix/catalog/main/page_blocks/element_4.php (строка ~14)

  • /bitrix/templates/aspro_next/components/bitrix/catalog/main/page_blocks/element_5.php (строка ~18)

  • /bitrix/templates/aspro_next/components/bitrix/catalog/main/page_blocks/fast_view_1.php (строка ~5) — обратите внимание: здесь у вас уже работает, но параметр тоже стоит добавить для единообразия.

Для страницы поиска (catalog.section):

  • /bitrix/templates/aspro_next/components/bitrix/catalog.search/main/template.php (строка ~673)

Для товаров на главной странице:

  • /include/mainpage/components/catalog_tab/type_1.php (строка ~10)

  • /include/mainpage/components/catalog_tab/type_2.php (строка ~10)

Пример кода: что и куда добавлять

В каждом из указанных файлов найдите вызов компонента. Выглядит он примерно так:

<?$APPLICATION->IncludeComponent(
    "bitrix:catalog.section",
    "main",
    array(
        "IBLOCK_ID" => $arParams["IBLOCK_ID"],
        "PRICE_CODE" => $arParams["PRICE_CODE"],
        "BASKET_URL" => $arParams["BASKET_URL"],
        // ... много других параметров
    ),
    $component
);?>

Вам нужно добавить новую строку с параметром "COMPATIBLE_MODE" => "Y" в начало массива параметров (или в любое место, но лучше в начало для наглядности) .

Было:

array(
    "IBLOCK_ID" => $arParams["IBLOCK_ID"],
    "PRICE_CODE" => $arParams["PRICE_CODE"],
    // ...
)

Стало:

array(
    "COMPATIBLE_MODE" => "Y",   // ← вот эта строка
    "IBLOCK_ID" => $arParams["IBLOCK_ID"],
    "PRICE_CODE" => $arParams["PRICE_CODE"],
    // ...
)

После внесения изменений сохраните файлы и обязательно очистите все кеши:

  1. Кеш сайта: Настройки → Очистка кеша.

  2. Кеш браузера (Ctrl+F5 или Cmd+Shift+R).

Почему это решение работает: подтверждения из практики

  1. Подтверждение от разработчиков: На официальном форуме 1С-Битрикс пользователи подтверждают, что после добавления параметра COMPATIBLE_MODE в простые компоненты (catalog.section) проблема решается: "Прописал, все заработало!" .

  2. Опыт владельцев сайтов: В блогах и на форумах описываются идентичные случаи: "После обновления Битрикс на сайте пропадают цены, наличие и другие показатели каталога товаров... Для его включения теперь в параметрах компонента установить галочку для соответствующего пункта. Или в коде вызова компонента явно указать параметр COMPATIBLE_MODE в состояние Y" .

  3. Специфика Aspro: Пользователи шаблонов Aspro (Шины и Диски 2.0, Максимум) прямо указывают на эту причину: "Это прикол Битрикс после одного из обновлений. Решение здесь..." и ссылаются на базу знаний Aspro . Другой источник подтверждает: *"С обновлением 1С-Битрикс 23.300.0 в компонентах каталога по умолчанию был выключен параметр COMPATIBLE_MODE. Проблема актуальна в кастомных шаблонах для детальных страниц и списков элементов"* .

Альтернативный метод (если не хотите править код)

Если вы не хотите вносить правки в код шаблона, в некоторых редакциях Битрикса параметр COMPATIBLE_MODE можно включить через визуальный интерфейс при редактировании компонента .

  1. Зайдите на страницу со списком товаров.

  2. Включите режим правки и нажмите на шестеренку компонента catalog.section.

  3. Найдите вкладку "Дополнительные параметры" или "Настройки компонента".

  4. Найдите чекбокс "Режим совместимости" (Compatible mode) и установите его.

  5. Сохраните настройки.

Однако, учитывая сложность шаблонов Aspro, ручное добавление параметра в код является более надежным способом.

Заключение

Проблема с исчезновением цен в списках товаров после обновления Битрикс версии 23.300.0 — это следствие изменения логики работы компонентов каталога и отключения режима совместимости по умолчанию. Шаблоны Aspro, не адаптированные под новый формат данных, перестают получать информацию о ценах.

Решение — добавить параметр "COMPATIBLE_MODE" => "Y" в вызовы компонентов catalog.sectioncatalog.element и catalog.top в файлах шаблона Aspro. Это заставляет компоненты формировать старые массивы данных (PRICESMIN_PRICE), которые ожидает шаблон, и цены с кнопками возвращаются на свои места.

Не забудьте всегда делать резервные копии файлов перед внесением изменений!

Нужна помощь с настройкой?

Не уверены, что справитесь самостоятельно, или хотите, чтобы кто-то проверил ваш сайт? Обратитесь к нам — мы поможем внедрить все необходимые правки, проверим работу каталога и убедимся, что цены отображаются корректно.

Получить консультацию
Читайте по теме
Все статьи
Нужен надежный исполнитель?
Разрабатываем сайты, выполняем миграцию на Битрикс, дорабатываем функционал, сопровождаем проекты, а также занимаемся поисковым продвижением и комплексным маркетингом
Получить консультацию
Все статьи