Задать вопрос
@denism300

Почему умный фильтр не учитывает торговые предложения?

На странице каталога используется предфильтр ($preFilter), который в зависимости от локации устанавливает отбор товаров на том или ином складе, и в зависимости от группы пользователей устанавливает отбор по оптовой или розничной цене.
Проблема в том, что при выводе количества элементов фильтр, как будто не учитывает торговые предложение.
К примеру, если взять фильтр по бренду "Apple" показывает 5 товаров - это как раз, количество простых товаров. Хотя, по факту, на странице присутствуют еще и товарные предложения бренда "Apple"

global $preFilter;

$is_wholesale_buyer = false;
$wholesaleGroupIds  = [1, 9];

if (CSite::InGroup($wholesaleGroupIds)) {
	$is_wholesale_buyer = true;
}

$selectedWarehouseId  = ($_COOKIE['BITRIX_SM_IDEVICE_GEO'] ?? '') === 'ru-pnz' ? 2 : 1;
$preFilter['>CATALOG_STORE_AMOUNT_' . $selectedWarehouseId] = 0;

if ($is_wholesale_buyer) {
	$preFilter['>CATALOG_PRICE_2'] = 0;
} else {
	$preFilter['>CATALOG_PRICE_1'] = 0;
}

$APPLICATION->IncludeComponent(
    "bitrix:catalog.smart.filter",
    "iDevice_smart_filter",
    array(
        "IBLOCK_TYPE" => $arParams["IBLOCK_TYPE"],
        "IBLOCK_ID" => $arParams["IBLOCK_ID"],
        "SECTION_ID" => $arCurSection['ID'],
        "FILTER_NAME" => $arParams["FILTER_NAME"],
        "PREFILTER_NAME" => "preFilter",
        "PRICE_CODE" => $is_wholesale_buyer ? array('WHOLESALE') : array('BASE'),
        "CACHE_TYPE" => $arParams["CACHE_TYPE"],
        "CACHE_TIME" => $arParams["CACHE_TIME"],
        "CACHE_GROUPS" => $arParams["CACHE_GROUPS"],
        "SAVE_IN_SESSION" => "N",
        "FILTER_VIEW_MODE" => $arParams["FILTER_VIEW_MODE"],
        "XML_EXPORT" => "N",
        "SECTION_TITLE" => "NAME",
        "SECTION_DESCRIPTION" => "DESCRIPTION",
        "HIDE_NOT_AVAILABLE" => "N",
        "TEMPLATE_THEME" => $arParams["TEMPLATE_THEME"],
        'CONVERT_CURRENCY' => $arParams['CONVERT_CURRENCY'],
        'CURRENCY_ID' => $arParams['CURRENCY_ID'],
        "SEF_MODE" => $arParams["SEF_MODE"],
        "SEF_RULE" => $arResult["FOLDER"] . $arResult["URL_TEMPLATES"]["smart_filter"],
        "SMART_FILTER_PATH" => $arResult["VARIABLES"]["SMART_FILTER_PATH"],
        "PAGER_PARAMS_NAME" => $arParams["PAGER_PARAMS_NAME"],
        "INSTANT_RELOAD" => $arParams["INSTANT_RELOAD"],
    ),
    $component,
    array('HIDE_ICONS' => 'Y')
);
  • Вопрос задан
  • 92 просмотра
Подписаться 1 Простой 3 комментария
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы