Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

вопрос по фильтру

00 голосов
7
Здравствуйте, а подскажите пожалуйста, как можно решить такую проблему. У меня многоуровневый каталог, использую комплексный компонент битрикс каталог. Решил добавить фильтр, выставляю параметры, и что я вижу, фильтр располагается во всех подразделах. Можно ли фильтр расположить так, чтобы он отображался только в последнем уровне, где хранятся элементы?
спросил 25 Май, 13 от rg (440 баллов)

7 Ответы

00 голосов
Можно, но тошно.

Посмотрите скрипт /bitrix/templates/(ШАБЛОН_САЙТА или .default)/components/bitrix/catalog/ШАБЛОН_КОМПЛЕКСНОГО_КОМПОНЕНТА/section.php

Там будет код типа:
Код
<?if($arParams["USE_FILTER"]=="Y"):?>
<?$APPLICATION->IncludeComponent(
   "bitrix:catalog.filter",
   "",
   Array(
      "IBLOCK_TYPE" => $arParams["IBLOCK_TYPE"],
      "IBLOCK_ID" => $arParams["IBLOCK_ID"],
      "FILTER_NAME" => $arParams["FILTER_NAME"],
      "FIELD_CODE" => $arParams["FILTER_FIELD_CODE"],
       "PROPERTY_CODE" => $arParams["FILTER_PROPERTY_CODE"],
      "PRICE_CODE" => $arParams["FILTER_PRICE_CODE"],
      "CACHE_TYPE" => $arParams["CACHE_TYPE"],
      "CACHE_TIME" => $arParams["CACHE_TIME"],
      "CACHE_GROUPS" => $arParams["CACHE_GROUPS"],
   ),
   $component
);
?>

Вам надо будет добавить дополнительную проверку в условие подключения компоненты bitrix:catalog.filter. Если не очень понятно, какую проверку, то спросите.
ответил 25 Май, 13 от Ly (4,580 баллов)
00 голосов
Спасибо большое за ответ, конечно, хотелось бы узнать поподробнее про проверку. Я так понимаю надо проверять на уровень вложенности каталога? Если не сложно, дайте ссылочку где почитать можно, или опишите чуть-чуть :oops:
ответил 26 Май, 13 от rg (440 баллов)
00 голосов
Я бы проверял на наличие подразделов. Как-то так:

Код
<?
// есть ли подразделы у текущего раздела?
$res = CIBlockSection::GetList(
   false,
   array(
      'IBLOCK_ID' => $arParams['IBLOCK_ID'],
      'SECTION_ID' => $arResult['VARIABLES']['SECTION_ID'],
      'ACTIVE' => 'Y',
   ),
   false
);
$bHasSubsections = ($res->SelectedRowsCount() > 0);
?>
<?if(!$bHasSubsections && $arParams["USE_FILTER"]=="Y"):?>
<?$APPLICATION->IncludeComponent(
   "bitrix:catalog.filter",
   .......
ответил 22 Авг, 13 от Ly (4,580 баллов)
00 голосов
Завтра доеду уже до работы проверю и отпишусь что получилось, спасибо за скорый ответ :)
ответил 20 Ноя, 13 от rg (440 баллов)
00 голосов
Спасибо Дмитрий, все отлично работает :) А нет, не все. Когда заходит не зарегистрированный пользователь, выдает ошибку Fatal error: Class 'CIBlockSection' not found и фильтр не работает :o . А под админом все ок
ответил 01 Март, 14 от rg (440 баллов)
00 голосов
Подключите модуль инфоблоков http://dev.1c-bitrix.ru/api_help/iblock/index.php перед CIBlockSection::GetList
Наверно проблема исчезнет :)
ответил 21 Июнь, 14 от sickmind (4,660 баллов)
00 голосов
Не наверное, исчезла точно, спасибо большое :)
ответил 21 Окт, 14 от rg (440 баллов)

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

0 голосов
3 ответов
спросил 28 Фев, 14 от Lollipopk (660 баллов)
0 голосов
4 ответов
спросил 13 Янв, 14 от JIapro (180 баллов)
0 голосов
1 ответ
спросил 06 Янв, 14 от mefhm78 (120 баллов)
0 голосов
2 ответов
спросил 25 Дек, 13 от Rogarond (820 баллов)
0 голосов
3 ответов
спросил 17 Май, 13 от AlexSol (240 баллов)