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

Сейчас такой шаблон страницы бренда с товарами бренда. Измени шаблон. сверху слева у нас логотип бренда справа от логотипа информация о бренде. Далее ниже идет фильтр горизонтальный, далее идут товары 6 карточек в ряд, выводим примерно 5 рядов и далее паг

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

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

Структура шаблона:

  1. Верхний блок: логотип слева, информация о бренде справа (flex-контейнер).
  2. Горизонтальный смарт-фильтр (компонент bitrix:catalog.smart.filter).
  3. Сетка товаров — 6 карточек в ряд, вывод ~30 товаров (5 рядов).
  4. Постраничная навигация (пагинация).

Полный код шаблона (файл detail.php компонента бренда):

<?php
if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) die();
/** @var array $arResult */
/** @var array $arParams */
/** @var CBitrixComponentTemplate $this */
\Bitrix\Main\UI\Extension::load('ui.bootstrap4'); // опционально — для CSS-сетки
?>

<!-- ========== БЛОК БРЕНДА: логотип + информация ========== -->
<div class="brand-header" style="display: flex; align-items: flex-start; gap: 30px; margin-bottom: 35px; flex-wrap: wrap;">

    <?php if ($arResult['DETAIL_PICTURE']): ?>
        <div class="brand-logo" style="flex-shrink: 0; max-width: 200px;">
            <img src="<?= $arResult['DETAIL_PICTURE']['SRC'] ?>"
                 alt="<?= htmlspecialcharsbx($arResult['NAME']) ?>"
                 style="width: 100%; height: auto; display: block;">
        </div>
    <?php endif; ?>

    <div class="brand-info" style="flex: 1; min-width: 250px;">
        <h1 style="margin-top: 0;"><?= htmlspecialcharsbx($arResult['NAME']) ?></h1>

        <?php if ($arResult['DETAIL_TEXT']): ?>
            <div class="brand-description">
                <?= $arResult['DETAIL_TEXT'] ?>
            </div>
        <?php endif; ?>
    </div>

</div>

<!-- ========== ГОРИЗОНТАЛЬНЫЙ ФИЛЬТР ========== -->
<?php
// Подключаем смарт-фильтр горизонтального типа
// Параметры нужно передать из родительского компонента или задать вручную
$APPLICATION->IncludeComponent(
    'bitrix:catalog.smart.filter',
    'horizontal', // или ваш кастомный шаблон
    array(
        'IBLOCK_TYPE' => $arParams['IBLOCK_TYPE'],         // тип инфоблока товаров
        'IBLOCK_ID'   => $arParams['IBLOCK_ID_CATALOG'],   // ID инфоблока товаров
        'SECTION_ID'  => '',                                // фильтр по всем разделам бренда
        'FILTER_NAME' => 'arrFilter',                       // имя фильтра для выборки
        'PREFILTER_NAME' => 'brandPreFilter',               // массив с предварительным фильтром по бренду
        'SAVE_IN_SESSION' => 'N',
        'INSTANT_RELOAD' => 'Y',
        'CACHE_TYPE'  => $arParams['CACHE_TYPE'],
        'CACHE_TIME'  => $arParams['CACHE_TIME'],
    ),
    $component,
    array('HIDE_ICONS' => 'Y')
);
?>

<!-- ========== ЗАГОЛОВОК БЛОКА ТОВАРОВ ========== -->
<h2 style="margin: 30px 0 20px;">Товары бренда <?= htmlspecialcharsbx($arResult['NAME']) ?></h2>

<!-- ========== ВЫБОРКА ТОВАРОВ ========== -->
<?php
// Подготавливаем фильтр для выборки товаров
$GLOBALS['brandFilter'] = array(
    '=IBLOCK_ID'           => $arParams['IBLOCK_ID_CATALOG'],
    '=PROPERTY_BRAND'      => $arResult['ID'],             // ID текущего бренда
    '=ACTIVE'              => 'Y',
    '=CATALOG_AVAILABLE'   => 'Y',                          // только доступные товары
);

// Применяем фильтр от смарт-фильтра (горизонтальный фильтр выше)
if (!empty($GLOBALS['arrFilter'])) {
    $GLOBALS['brandFilter'] = array_merge(
        $GLOBALS['brandFilter'],
        $GLOBALS['arrFilter']
    );
}
?>

<?php
// Используем комплексный компонент catalog.section для вывода товаров
$APPLICATION->IncludeComponent(
    'bitrix:catalog.section',
    'brand_products', // ваш кастомный шаблон, см. код ниже
    array(
        'IBLOCK_TYPE'              => $arParams['IBLOCK_TYPE'],
        'IBLOCK_ID'                => $arParams['IBLOCK_ID_CATALOG'],
        'ELEMENT_SORT_FIELD'       => 'sort',
        'ELEMENT_SORT_ORDER'       => 'asc',
        'PAGE_ELEMENT_COUNT'       => 30,                    // 6x5 = 30 товаров
        'LINE_ELEMENT_COUNT'       => 6,                     // 6 карточек в ряд
        'FILTER_NAME'              => 'brandFilter',
        'PROPERTY_CODE'            => array('BRAND', 'ARTICLE', 'MATERIAL'),
        'PRICE_CODE'               => $arParams['PRICE_CODE'],
        'CONVERT_CURRENCY'         => 'Y',
        'CURRENCY_ID'              => $arParams['CURRENCY_ID'],
        'HIDE_NOT_AVAILABLE'       => 'Y',
        'HIDE_NOT_AVAILABLE_OFFERS' => 'Y',
        'ADD_SECTIONS_CHAIN'       => 'N',
        'SET_TITLE'                => 'N',
        'SET_BROWSER_TITLE'        => 'N',
        'CACHE_TYPE'               => $arParams['CACHE_TYPE'],
        'CACHE_TIME'               => $arParams['CACHE_TIME'],
        'CACHE_GROUPS'             => $arParams['CACHE_GROUPS'],
        'DISPLAY_BOTTOM_PAGER'     => 'Y',                    // пагинация снизу
        'PAGER_TITLE'              => 'Товары бренда',
        'PAGER_SHOW_ALWAYS'        => 'Y',
        'PAGER_TEMPLATE'           => '.default',
        'PAGER_DESC_NUMBERING'     => 'N',
        'PAGER_DESC_NUMBERING_CACHE_TIME' => 36000,
        'PAGER_SHOW_ALL'           => 'N',
        'PAGER_BASE_LINK_ENABLE'   => 'Y',
        'SET_STATUS_404'           => 'N',
        'SHOW_404'                 => 'N',
        'MESSAGE_404'              => '',
        'ACTION_VARIABLE'          => 'action',
        'PRODUCT_ID_VARIABLE'      => 'id',
        'USE_PRODUCT_QUANTITY'     => 'N',
        'ADD_PROPERTIES_TO_BASKET' => 'Y',
        'PRODUCT_PROPS_VARIABLE'   => 'prop',
        'PARTIAL_PRODUCT_PROPERTIES' => 'Y',
        'OFFERS_CART_PROPERTIES'   => array(),
        'PRODUCT_SUBSCRIPTION'     => 'N',
        'SHOW_PRICE_COUNT'         => '1',
        'PRICE_VAT_INCLUDE'        => 'Y',
        'USE_PRODUCT_NAV'          => 'Y',
        'BACKGROUND_IMAGE'         => '',
        'COMPATIBLE_MODE'          => 'Y',
        'DISABLE_INIT_JS_IN_COMPONENT' => 'Y',
    ),
    $component
);
?>

Шаблон для bitrix:catalog.section — файл brand_products/template.php:

Скопируйте стандартный шаблон .default компонента catalog.section в brand_products, или используйте этот минимальный вариант:

<?php
if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) die();
/** @var array $arResult */
/** @var array $arParams */
/** @var CBitrixComponentTemplate $this */
$this->setFrameMode(true);
?>

<?php if (!empty($arResult['ITEMS'])): ?>

    <div class="brand-products-grid" style="
        display: grid;
        grid-template-columns: repeat(6, 1fr);
        gap: 20px;
        margin-bottom: 30px;
    ">

        <?php foreach ($arResult['ITEMS'] as $item): ?>
            <?
            $this->AddEditAction($item['ID'], $item['EDIT_LINK'], CIBlock::GetArrayByID($item['IBLOCK_ID'], 'ELEMENT_EDIT'));
            $this->AddDeleteAction($item['ID'], $item['DELETE_LINK'], CIBlock::GetArrayByID($item['IBLOCK_ID'], 'ELEMENT_DELETE'));
            ?>

            <div class="product-card" id="<?= $this->GetEditAreaId($item['ID']) ?>" style="
                border: 1px solid #eee;
                border-radius: 8px;
                padding: 15px;
                display: flex;
                flex-direction: column;
                background: #fff;
            ">

                <?php if ($item['PREVIEW_PICTURE']['SRC'] || $item['DETAIL_PICTURE']['SRC']): ?>
                    <?php $picture = $item['PREVIEW_PICTURE'] ?: $item['DETAIL_PICTURE']; ?>
                    <a href="<?= $item['DETAIL_PAGE_URL'] ?>" style="display: block; margin-bottom: 12px;">
                        <img src="<?= $picture['SRC'] ?>"
                             alt="<?= htmlspecialcharsbx($item['NAME']) ?>"
                             style="width: 100%; height: 180px; object-fit: contain; display: block;">
                    </a>
                <?php endif; ?>

                <a href="<?= $item['DETAIL_PAGE_URL'] ?>"
                   style="text-decoration: none; color: #333; font-weight: 500; margin-bottom: 8px;">
                    <?= htmlspecialcharsbx($item['NAME']) ?>
                </a>

                <?php if (!empty($item['MIN_PRICE']['PRINT_DISCOUNT_VALUE'])): ?>
                    <div class="product-price" style="margin-top: auto; font-size: 1.1em; font-weight: 700; color: #d00;">
                        <?= $item['MIN_PRICE']['PRINT_DISCOUNT_VALUE'] ?>
                    </div>
                <?php elseif (!empty($item['MIN_PRICE']['PRINT_VALUE'])): ?>
                    <div class="product-price" style="margin-top: auto; font-size: 1.1em; font-weight: 700; color: #333;">
                        <?= $item['MIN_PRICE']['PRINT_VALUE'] ?>
                    </div>
                <?php endif; ?>

            </div>
        <?php endforeach; ?>

    </div>

    <!-- ====== ПАГИНАЦИЯ ====== -->
    <?php if ($arResult['NAV_STRING']): ?>
        <div class="brand-pagination" style="text-align: center; margin: 20px 0;">
            <?= $arResult['NAV_STRING'] ?>
        </div>
    <?php endif; ?>

<?php else: ?>
    <p style="text-align: center; padding: 40px 0; color: #888;">Товары этого бренда не найдены.</p>
<?php endif; ?>

Важные пояснения:

  • Фильтрация по бренду. В примере используется свойство PROPERTY_BRAND — замените на актуальный код свойства, которое привязывает товар к бренду в вашем инфоблоке товаров.
  • ID инфоблока товаров. Параметр IBLOCK_ID_CATALOG должен быть передан в $arParams компонента бренда. Если его нет — укажите ID инфоблока жёстко: 'IBLOCK_ID' => 2.
  • Горизонтальный фильтр. Компонент bitrix:catalog.smart.filter выводится в горизонтальной ориентации. Шаблон horizontal можно взять из стандартных шаблонов компонента и доработать под свой дизайн.
  • Сетка 6 колонок. Реализована через CSS Grid (grid-template-columns: repeat(6, 1fr)). При необходимости адаптива — добавьте медиа-запросы для переключения на 3 или 2 колонки на мобильных устройствах.
  • Пагинация. Управляется параметром PAGE_ELEMENT_COUNT = 30 (6 × 5). Компонент сам выводит постраничную навигацию через $arResult['NAV_STRING'].

Услуги Стоимость разработки на 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С-Битрикс