Умный фильтр (bitrix:catalog.smart.filter) - поддержка работы в корне каталога (без указания раздела)

Рейтинг: 55.6817  
Внедрено
Предложил Роман Забродин 23.04.2013 06:10:06

Умный фильтр (bitrix:catalog.smart.filter) - поддержка работы в корне каталога (без указания раздела)

Срочно нужно! Суть проблемы в том, что если мы находимся в корне инфоблока (не зашли в раздел) то во всплывашке:


всегда будет ошибочно писаться что товаров НЕ найдено.
Рейтинг: -6.8692  
Ответил 01.06.2015 11:30:37
Внедрено в 15.5 релизе. Спасибо за идею и комментарии!

Рейтинг: 0  
Ситников Александр 27.03.2017 08:04:32
Вот только не в sections.php, а в section.php.
И добавить условие срабатывания:
условие, можно..
но вот именно sections а не section. в случае если каталог имеет разделы.
Рейтинг: 0.2238  
Голубев Константин 28.03.2017 10:43:22
Ситников Александр
подскажите пожалуйста, если не сложно, какие параметры у вас для случая если разделы есть? интересует именно - используете ли SHOW_ALL_WO_SECTION, BY_LINK ?
SMART_FILTER_PATH каким указывать для параметров комплексного компонента?
сейчас у меня #SECTION_CODE_PATH#/filter/#SMART_FILTER_PATH#/apply/
при этом выходит 404 ошибка, и никак не могу победить..
Рейтинг: 0.2231  
Ситников Александр 28.03.2017 17:53:10
подскажите пожалуйста, если не сложно, какие параметры у вас для случая если разделы есть? интересует именно - используете ли SHOW_ALL_WO_SECTION, BY_LINK ?
SMART_FILTER_PATH каким указывать для параметров комплексного компонента?
сейчас у меня #SECTION_CODE_PATH#/filter/#SMART_FILTER_PATH#/apply/
при этом выходит 404 ошибка, и никак не могу победить..
"SHOW_ALL_WO_SECTION" => "Y",
BY_LINK не передаю

но вам думаю стоит поставить и потестить
"SET_STATUS_404" => "N",
"SHOW_404" => "N",
Рейтинг: -1.4577  
Коняев Павел 28.03.2017 23:42:08
Парни, есть проблема:
Есть каталог, в каталоге есть разделы. Необходимо убрать умный фильтр от туда где выводятся разделы.
Как это сделать?
Подскажите направление, пожалуйста.
Спасибо.
Рейтинг: 0  
Серебрянский Тимур 06.06.2017 01:08:57
При таком способе работает сама фильтрация, НО сам смарт фильр предлагает выбор из значений свойств только одного раздела - первого попавшегося раздела конечного уровня.
В итоге, фильтр показывает не все свойства, и их значения, ограничиваясь выбором свойств в одной категории.
Вопрос не решен.
Рейтинг: 0  
Егоров Михаил 24.10.2017 17:07:58
Чтобы работало в корне с включенным ЧПУ в комплексном каталоге
в sections.php до вызова умного фильтра добавить  
if(empty($arResult["VARIABLES"]["SMART_FILTER_PATH"])){
$re = '/^\/.*\/filter\/(.*)\/apply\//';
$str = Bitrix\Main\Context::getCurrent()->getRequest()->getRequestedPage();
preg_match($re, $str, $matches);
$arResult["VARIABLES"]["SMART_FILTER_PATH"] =$matches[1];
}

ну а в вызове умного фильтра
"SMART_FILTER_PATH" => $arResult["VARIABLES"]["SMART_FILTER_PATH"]
Как и у всех чпу, комплексный компонент, в каталоги есть разделы. В section.php вывожу все элементы через bitrix:catalog.section - "SHOW_ALL_WO_SECTION" => "Y",
По итогу в фильтре вижу всевозможные сво-ва из всего каталога, после фильтрации, показывает свой-ва только из одного раздела, хотя в сам раздел перехода нет. Как быть?  
Рейтинг: 0  
Роман 08.02.2018 13:29:34
В компоненте bitrix:catalog.smart.filter меняем параметр "SECTION_ID" с $arCurSection['ID'] на
"SECTION_ID" => $arResult["VARIABLES"]["SECTION_ID"].

Дело в том, что если раздел корневой, то $arCurSection['ID'] возвращает первый попавшийся раздел. Поэтому в фильтре свойства из одного раздела.
Рейтинг: 0  
prosto vasya 09.03.2018 13:26:26
У меня не работает умный фильтр в корне, что я делаю не так?
1С-Битиркс. Не работает умный фильтр в корне раздела
Рейтинг: 0  
Police King 10.03.2018 01:29:38
У меня не работает умный фильтр в корне, что я делаю не так?
Фильтр не работает в корне каталога!
Рейтинг: 0  
Lorem Ipsum 06.04.2018 19:39:32
В корне каталога фильтр с ЧПУ так не хочет работать, без ЧПУ работает нормально, но это не очень, т.к. адрес сплошь абракадабара! Все параметры выставил правильно, но почему то вот такая дичь происходит только в корне каталога.
Рейтинг: 7.7804  
Лаптев Максим 10.07.2018 17:55:48
1. Добавляем "SHOW_ALL_WO_SECTION" => "Y" в настройки компонента catalog.smart.filter и catalog.section.
2. В настройках комплексного компонента каталога в параметре SEF_URL_TEMPLATES переопределяем "sections" => "filter/#SMART_FILTER_PATH#/apply/".

Итого, умный фильтр работает в корне каталога с ЧПУ.
Во всплывающем окне будет корректное кол-во отфильтрованных товаров в разрезе всего каталога.

Тестировал как мог - ошибок не нашел.

Версия битрикс - 17.5.13
Рейтинг: 0  
Симонов Евгений 12.10.2018 16:45:56
Есть у кого пример сайта с настроенным фильтром в корне? А то совет из последнего комментария не помог.

Версия битрикс тоже 17.5.13
Рейтинг: 0.8902  
Лаптев Максим 16.10.2018 13:53:51
А что у вас в sections.php? Должен быть просто include __DIR__ . '/section.php'.
И в самом section.php попробуйте убрать все, оставьте только вызов фильтра и catalog.sections.
Обязательно уберите битриксовый код вначале по поиску ID и CODE текущего раздела.
Рейтинг: 0  
Свидинский Иван 09.02.2019 05:26:11
Работа каталога и умного фильтра с ЧПУ в корне каталога

Решил выписать как делать в виде одного комментария, чтобы было удобней:

1. Ставим и настраиваем комплексный компонент bitrix:catalog

a. Управление адресами страниц

- Каталог ЧПУ (относительно корня сайта): /catalog/
- Список разделов: (пустое)
- Раздел: (пустое)
- Детальная информация: #ELEMENT_CODE#/
- Url раздела для умного фильтра: #SECTION_CODE#/filter/#SMART_FILTER_PATH#/apply/

b. Важно поставить "SET_STATUS_404" => "N", чтобы не отлавливать 404 при повторной фильтрации.

Проблема описана здесь https://toster.ru/q/520675 и https://www.youtube.com/watch?v=14VdzaZkoNo&feature=youtu.be (выше в комментариях про это есть)

2. Копируем шаблон компонента и делаем корректировки по страницам

a. sections.php

Удаляем все и подключаем
include__DIR__.'/section.php';

b. section.php

1) Удаляем все и ставим последовательно:
if(empty($arResult["VARIABLES"]["SMART_FILTER_PATH"]))
{
  $re='/^\/.*\/filter\/(.*)\/apply\//';
  $str=Bitrix\Main\Context::getCurrent()->getRequest()->getRequestedPage();
  preg_match($re,$str,$matches);
  $arResult["VARIABLES"]["SMART_FILTER_PATH"]=$matches[1];
}

2) Копируем из section_horizontal.php или section_vertical.php

bitrix:catalog.smart.filter

Добавляем в настройки компонента
"SHOW_ALL_WO_SECTION"=>"Y",

Меняем в настройках компонента
"SECTION_ID"=>0,
"SEF_RULE"=>"/catalog/filter/#SMART_FILTER_PATH#/apply/"

bitrix:catalog.section
Добавляем в настройки компонента
"SHOW_ALL_WO_SECTION"=>"Y"


Файлы sections.php и section.php https://yadi.sk/d/Lw7evDBh88QoFg
Рейтинг: 0  
Свидинский Иван 09.02.2019 06:30:55
Также после выше указанных настроек была обнаружена проблема на версии 18.1.5.
В комментариях её не встречал, поэтому опишу проблему и решение.

Проблема:
Фильтруем товары по cheackbox.
Есть свойство, которое после фильтрации показывает ноль, то к label добавляет disabled, а к input атрибут disabled, чтобы нельзя было выбрать нулевой вариант выборки товаров.
Если снять, например, cheackbox, который был до этого выбран, то для свойства с нулевым вариантом появятся изначальные варианты до фильтрации, но они будут disabled - выбрать их нельзя.

Решение:
В скопированном шаблоне компонента умного фильтра в файл script.js
\bitrix\catalog.smart.filter\.default\script.js

Находим (у меня это 97 строка)
JCSmartFilter.prototype.updateItem = function (PID, arItem)
Далее находим (у меня это 151 строка)
if (value.hasOwnProperty('ELEMENT_COUNT'))
и в конец условия добавляем код. который будет убирать или ставить атрибуты по кол-ву элементов в свойстве
if(parseInt(value.ELEMENT_COUNT) !== 0){
    BX.removeClass(label, 'disabled');
    $("#"+value.CONTROL_ID).prop('disabled', false);
    $("#"+value.CONTROL_ID).removeAttr('disabled');
}
else
{
    BX.addClass(label, 'disabled');
    $("#"+value.CONTROL_ID).prop('disabled', true);
    $("#"+value.CONTROL_ID).attr('disabled');
}
пример файла https://yadi.sk/d/MrKdY664VW5P8w
Страницы: 1  2