Михаил Базаров Разработка на 1С-Битрикс Михаил Базаров

Выведи товары конкретного бренда на странице бренда используя вывод товара с помощью компонента <? $APPLICATION->IncludeComponent( 'bitrix:catalog.item',

Вопрос задан: 28 июня 2026 в 08:00 | Просмотров: 6 Использованные MCP инструменты: searchDocs, liveApiFindFunction, liveApiListComponents, liveApiGetDocResource

Задайте свой вопрос — Работает AI в связке с MCP сервером. Перепроверяйте важную информацию.

Вот полная инструкция, как вывести товары конкретного бренда на странице бренда, используя компонент bitrix:catalog.item.


Принцип работы

Компонент bitrix:catalog.item — это карточка единичного товара. Он не делает выборку из базы сам, а только рендерит готовый переданный ему массив данных ITEM. Ответственность за получение списка товаров лежит на вас. Вам нужно:

  1. Получить ID текущего бренда (из URL, элемента инфоблока или свойства).
  2. Выбрать из инфоблока товаров все элементы, у которых свойство "Бренд"/"Производитель" равно ID бренда.
  3. Для каждого товара подготовить структуру данных $item и вызвать bitrix:catalog.item.

Пошаговая реализация

1. Получение ID бренда на странице

Предположим, что страница бренда — это детальная страница элемента инфоблока "Бренды". Тогда ID бренда берётся из $arResult['ID'] или из URL:

<?php
// Вариант 1: если это детальная страница бренда (компонент news.detail / catalog.element)
$brandId = $arResult['ID'];

// Вариант 2: если ID передан в параметре URL
$brandId = (int)$_REQUEST['brand_id'];

// Вариант 3: если бренд — раздел, то ID раздела
$sectionId = $arResult['ID']; // ID раздела-бренда
?>

2. Выборка товаров бренда через CIBlockElement::GetList

Свойство "Бренд" может быть разного типа: привязка к элементам (E), справочник HL-блок или просто список. Ниже пример для привязки к элементам (свойство с кодом BRAND):

<?php
if (!\Bitrix\Main\Loader::includeModule('iblock') || !\Bitrix\Main\Loader::includeModule('catalog'))
{
    return;
}

$catalogIblockId = CATALOG_IBLOCK_ID; // ID вашего инфоблока товаров
$brandPropertyCode = 'BRAND';          // Код свойства "Производитель"
$brandId = (int)$arResult['ID'];       // ID текущего бренда

// Получаем данные для подготовки карточек
$productIterator = \CIBlockElement::GetList(
    ['SORT' => 'ASC'],                 // сортировка
    [
        'IBLOCK_ID'       => $catalogIblockId,
        'ACTIVE'          => 'Y',
        'PROPERTY_' . $brandPropertyCode => $brandId,
        '=AVAILABLE'      => 'Y',      // новые ключи каталога
    ],
    false,                             // группировка
    ['nPageSize' => 20],              // пагинация
    [
        'ID', 'IBLOCK_ID', 'NAME', 'CODE',
        'DETAIL_PAGE_URL', 'PREVIEW_PICTURE', 'DETAIL_PICTURE',
        'PREVIEW_TEXT', 'DETAIL_TEXT',
        'CATALOG_QUANTITY', 'CATALOG_AVAILABLE',
    ]
);

$items = [];
$areaIds = [];

while ($product = $productIterator->GetNext())
{
    $product['ID'] = (int)$product['ID'];
    $items[] = $product;
    $areaIds[$product['ID']] = 'item_' . $product['ID'] . '_' . randString(8);
}
?>

3. Подготовка параметров для catalog.item

Компонент bitrix:catalog.item ожидает структуру, аналогичную той, что формирует catalog.section. Вам нужно подготовить массив $generalParams (общие настройки каталога) и массив $itemParameters (дополнительные параметры для каждого товара):

<?php
// Параметры каталога, общие для всех товаров
$generalParams = [
    'IBLOCK_ID'             => $catalogIblockId,
    'PRICE_CODE'            => ['BASE'],       // типы цен
    'CONVERT_CURRENCY'      => 'Y',            // конвертировать валюты
    'CURRENCY_ID'           => 'RUB',
    'BASKET_URL'            => '/personal/cart/',
    'USE_PRODUCT_QUANTITY'  => 'N',
    'ADD_PROPERTIES_TO_BASKET' => 'Y',
    'PRODUCT_PROPS_VARIABLE'   => 'prop',
    'PARTIAL_PRODUCT_PROPERTIES' => 'N',
    'ADD_PROPERTIES_TO_BASKET' => 'Y',
    'PRODUCT_PROPERTIES'    => [],   // свойства, передаваемые в корзину
    'OFFERS_FIELD_CODE'     => ['ID', 'NAME'],
    'OFFERS_PROPERTY_CODE'  => [],   // свойства ТП
    'OFFERS_SORT_FIELD'     => 'sort',
    'OFFERS_SORT_ORDER'     => 'asc',
    'USE_COMPARE'           => 'N',
];

// Дополнительные параметры для каждого конкретного товара (могут различаться)
$itemParameters = [];
foreach ($items as $item)
{
    $itemParameters[$item['ID']] = [];
}
?>

4. Вывод товаров в цикле с помощью catalog.item

Теперь в шаблоне проходите по массиву $items и для каждого вызываете компонент:

<?php if (!empty($items)): ?>
    <div class="brand-products">
        <h2>Товары бренда</h2>
        <div class="product-list">

        <?php foreach ($items as $item):
            $APPLICATION->IncludeComponent(
                'bitrix:catalog.item',
                'card',   // ваш шаблон карточки
                [
                    'RESULT' => [
                        'ITEM' => $item,
                        'AREA_ID' => $areaIds[$item['ID']],
                        'TYPE' => 'CARD',
                        'BIG_LABEL' => 'N',
                        'BIG_DISCOUNT_PERCENT' => 'N',
                        'BIG_BUTTONS' => 'N',
                        'SCALABLE' => 'N',
                    ],
                    'PARAMS' => $generalParams + $itemParameters[$item['ID']],
                ],
                $component,
                ['HIDE_ICONS' => 'Y']
            );
        endforeach; ?>

        </div>

        <?php // Постраничная навигация
        $APPLICATION->IncludeComponent(
            'bitrix:main.pagenavigation',
            '',
            [
                'NAV_OBJECT' => $productIterator,
            ],
            $component,
            ['HIDE_ICONS' => 'Y']
        );
        ?>
    </div>
<?php endif; ?>

Важные замечания

  • Структура $item должна содержать поля, ожидаемые шаблоном card. Если шаблон использует дополнительные данные (цены, склады, торговые предложения), их нужно догрузить через CIBlockElement::GetList или через CCatalogSKU::getOffersList().
  • Цены — если в шаблоне card используются цены, их нужно получить отдельно через \Bitrix\Catalog\PriceTable::getList() и добавить в массив $item в ключ PRICES (как это делает компонент catalog.section).
  • Торговые предложения — если товар имеет SKU, используйте CCatalogSKU::getOffersList(), чтобы получить предложения и передать их в $item['OFFERS'].
  • Альтернатива — проще всего использовать компонент bitrix:catalog.section с фильтром по свойству бренда, передав параметр ~PROPERTY_BRAND или через настройки FILTER_NAME. Он сам сформирует правильную структуру данных для catalog.item.

Пример с catalog.section (рекомендуемый упрощённый вариант)

<?php
$GLOBALS['arrFilterBrand'] = [
    'PROPERTY_BRAND' => $brandId,
];

$APPLICATION->IncludeComponent(
    'bitrix:catalog.section',
    '',
    [
        'IBLOCK_TYPE'  => 'catalog',
        'IBLOCK_ID'    => CATALOG_IBLOCK_ID,
        'ELEMENT_SORT_FIELD' => 'sort',
        'ELEMENT_SORT_ORDER' => 'asc',
        'FILTER_NAME'       => 'arrFilterBrand',
        'SECTION_USER_FIELDS' => [],
        'SHOW_ALL_WO_SECTION' => 'Y',
        'PAGE_ELEMENT_COUNT'  => 20,
        'PRICE_CODE'   => ['BASE'],
        'CONVERT_CURRENCY' => 'Y',
        'CURRENCY_ID'  => 'RUB',
        'TEMPLATE_THEME' => 'blue',
        'ADD_PROPERTIES_TO_BASKET' => 'Y',
        'PRODUCT_DISPLAY_MODE' => 'Y',
        // остальные параметры...
    ],
    $component,
    ['HIDE_ICONS' => 'Y']
);
?>

Компонент catalog.section сам выполнит всю подготовку данных и внутри своего шаблона вызовет bitrix:catalog.item для каждого товара. Это самый правильный и производительный способ.


Заключение

Вы можете выводить товары бренда как через ручной цикл с bitrix:catalog.item (нужна самостоятельная подготовка структуры $item с ценами, галереей, наличием), так и через готовый bitrix:catalog.section с фильтром по свойству бренда. Второй способ предпочтительнее, так как он гарантирует корректную структуру данных для карточки товара.

Услуги Стоимость разработки на 1С-Битрикс

Стоимость разработки сайта зависит от объёма и сложности проекта. Ниже приведены ориентировочные цены, как правило не выходят за обозначенные рамки. Срок разработки зависит от сложности проекта: как правило называю сроки с запасом.
Финальная стоимость и сроки разработки обговариваются на этапе обсуждения. Скачайте опросник на разработку, заполните как можно подробнее и вышлите удобным способом. После ознакомления смогу задать уточняющие вопросы и оценить проект.
Поддержка и доработки проектов
от 3 000 руб. от 1 часа

Выполнение доработок любой сложности. Поддержка, модернизация и расширение функционала существующих проектов. Решение задач: от мелких правок вёрстки до разработки новых модулей.

Подробнее
Сайт на готовом решении 1С-Битрикс
от 70 000 руб. от 5-ти дней

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

Подробнее
Индивидуальная разработка магазина
от 300 000 руб. от 5-ти недель

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

Подробнее
Мобильное приложение
от 300 000 руб. от 4-х недель

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

Подробнее
Инфоресурс
от 170 000 руб. от 3-х недель

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

Подробнее
Сайт компании
от 150 000 руб. от 2-х недель

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

Подробнее

Включено в стоимость разработки:

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

Блог-note Заметки по 1С-Битрикс