Рассмотрим как можно сделать выпадающий список свойств в умном фильтре Битрикс, вместо стандартного chekbox. Нужно это дастаточно редко однако случается.
В начале было вот так:
Станет вот так:
Для начала копируем шаблон стандартного smart.filter в папку со своим шаблоном сайта и подключаем его в шаблоне комплексного компонента каталога, заменив соответствующую строку в файле section.php.
Далее открываете шаблон компонента умного фильтра smart.filter . Для этого заходите в свой шаблон, например, /bitrix/templates/.default/components/bitrix/catalog.smart.fitr/myfilter и изменяете следующие файлы:
В файле script.js изменяете 2 метода click и reload:
Метод clickSelect() на этот :
Метод Метод reloadSelect():
В файле template.php находим часть которая выводит инпуты с чекбоксами, примерно 147-я строка и полностью заменяем на:
И в самый конец template.php вставляем скрипт который поможет стандартному AJAX понять какие параметры ему предаются. Для каждого списка обработчик свой:
<script>
$(document).ready(function(){
<? //Формируем дополнительные jquery обработчики для select-ов
foreach($arResult["ITEMS"] as $key=>$arItem) {
if(!empty($arItem["VALUES"]) && !isset($arItem["PRICE"])) {
?>
//Проставляем name select-ам с уже выбранными свойствами
setTimeout(function(){
var SelectOption = $("#<?=$arItem['CODE']; ?> option:selected").attr('id');
$("#<?=$arItem['CODE']; ?>").attr('name',SelectOption);
},1500);
//заполнение name с реакцией на change
$("#<?=$arItem['CODE']; ?>").on('change', function(){
var SelectOption = $("#<?=$arItem['CODE']; ?> option:selected").attr('id');
$("#<?=$arItem['CODE']; ?>").attr('name',SelectOption);
});
<?
}
}?>
});
</script>
В общем-то все, стилизовать внешний вид вы всегда сможете под себя. Написано на основе нескольких тем на форуме http://dev.1c-bitrix.ru/community/forums/
![]()
Игорь
|
к сожалению не работает
![]() |
![]()
Михаил Базаров
|
||
|
||
![]()
Дмитрий
|
Спасибо!
|
![]()
Валентин
|
Доброго времени суток! Все сделал как Вы написали! Но вышла нехорошая штука: при добавлении компонента в select ниже появляется дополнительный select. В итоге у меня на одно свойство имеются два селекта с одинаковыми компонентами. Как быть??? Заранее очень благодарен!
|
![]()
Guest
|
Добрый день!
Есть ли способ переделать поля аналогично в input? |
![]()
Михаил Базаров
|
||
|
||
![]()
Guest
|
Спасибо за инфу, хотелось бы увидеть урок по переносу умного фильтра на главную страницу
|
![]()
Михаил Базаров
|
||
|
||
![]()
Марина
|
Добрый день!
Спасибо Вам за Вашу работу здесь. Для меня, как новичка в Bitrix, очень много полезного! Буду признательна за ответ: можно ли штатными средствами Bitrix Управление сайтом сделать такую выборку по товарам. Если нет, то каким образом не штатными внутри системы? Спасибо. |
![]()
Александр Христич
|
Михаил, здравствуйте!
Не работает умный фильтр для не авторизованных пользователей, как это можно исправить? |
![]()
Александр Си
|
Здравствуйте Михаил! Вопрос немножко не по ветке ваших тем, но хотелось бы получить совет от грамотного специалиста.
Вопрос в том, что сейчас на стандартной сборке Битрикс Малый Бизнес есть необходимость видоизменить умный фильтр под свои нужды, а именно: изменить шаблон вывода параметров, версткой бутстрап в 4 колонки и в определенной очередности. Но открыв программный код поняли, что видимо все параметры дополнительные свои созданные выводятся не отдельным кодом на каждый параметр, а общим, а в шаблоне соответственно необходимо разделить свойства отдельными столбцами, и вообще изменить общий дизайн всего фильтра, кардинально. Возможно ли реализовать это и что бы вы посоветовали сделать в данном случае? |
![]()
Михаил Базаров
|
||
Можете просто разобрать их на более гибкие if-ы Да, листинг будет просто огромный. Но зато поубираете не нужные case-ы. За счет этого, немного подсократите. Само собой, это стоит делать, если реально нужно переделать шаблон фильтра- "под орех" В целом, отвечая на вопрос: Да, с шаблоном фильтра можно сотворить что угодно. |
||
![]()
Александр Си
|
||
Конструкция по верстке:
В чем сложности: Свойство по клике на которое открывается значение, при клике на которое открывается список, вот необходимо чтобы была главная ссылка, при клике на которую сразу бы выпадали значения (причем хорошо бы, чтобы значения Все не было вообще в списке). И соответственно как вообще фильтр сделать в одну строку и распределить свойства как бы отдельным li друг от друга. кейсы мы сократили до выпадающего списка и чекбоксов, ну и диапазон цен: |
||
![]()
a13z2005@yandex.ru
|
|
![]()
Михаил Базаров
|
||
Если нет, можно переделать чекбоксы- нужно будет плотненько поверстать и попотеть- но сымитировать такую возможность через них |
||
На нем, уже много видеоуроков по 1С-Битрикс. Как одиночные видео так и серии видеоуроков Перейти на канал
Совсем скоро выйдет видеокурс по разработке доски объявлений с мобильным приложением. Подписывайтесь и будьте в курсе: