Перенос умного фильтра в Битриксе

Автор: Дмитрий Акифьев. Размещено в: 1С-Битрикс

Умный фильтр

Приветствую, Друзья!

В этом видеоуроке Вы узнаете о том, как перенести умный фильтр в интернет-магазине на 1С-Битрикс в любую другую область страницы.

В типовом адаптивном шаблоне магазина на Битриксе, когда используется вертикальное главное меню, фильтр товаров имеет горизонтальный вид, и в этом варианте выглядит не аккуратно. С моей точки зрения. Зато под вертикальным меню есть куча свободного места, особенно если под меню не выводится блок ранее просмотренных товаров. Вот туда мы и перенесем умный фильтр.

Я покажу 2 способа:

  1. С помощью буферизации вывода стандартными функциями PHP (4 строки кода). Есть некоторые существенные ограничения.
  2. С помощью механизма отложенных функций Битрикса (3 строки кода). Тут нет вообще никаких ограничений. Как говорится, знать всем.

Урок не большой и достаточно простой, хоть и касается разработки. Поэтому может пригодится всем, кто использует шаблон с вертикальным меню. Хотя способ подойдет для переноса любых блоков сайта в другое место, как в конструкторе.

Все подробности в этом видеоуроке:

На этом сегодня все! Не забываем жать на социальные кнопки слева и задавать свои вопросы чуть ниже в комментариях!

 
Стрела влево

Если вам понравилась статья, то нажмите на одну из кнопок социальных сетей для размещения ссылки на страницу в своей ленте в этой соцсети.

 

Метки:, , , ,

 

Комментарии (19):

  • Алексей

    |

    Ваш урок очень помог. Перенес у себя фильтр под меню слева. И как писали выше отбора не происходит, ищу где чего прикрутить надо.

    У меня вопрос, может подскажите, хотел в фильтре рядом с названием свойства сделать дополнительную инфу. Так же как в настройках это реализовано, картинка со знаком вопроса, при наведении мышки небольшой faq отображается

    Ответить

    • Дмитрий Акифьев

      |

      По первому вопросу посмотрите ниже комментарии, там Алексей давал ссылку на статью как перенести фильтр вообще куда хочется, даже без привязки к Каталогу.

      По второму вопросу — всё можно сделать. У каждого свойства в админке даже есть такое специальное поле — Подсказка, куда можно писать описание поля. Только отображается это поле сейчас в форме редактирования товара в админке слева от названия свойства и больше нигде. Но, доработав код шаблона фильтра можно то же самое сделать и в самом фильтре. Было бы желание. Но я не обучаю программированию, поэтому ищите ответ в другом месте.

      Ответить

      • Алексей

        |

        Поле Подсказка нашел, но у него ограничение на кол-во символов

        Ответить

        • Дмитрий Акифьев

          |

          Мало? Тогда делать какое-то свое решение. Вариантов много — от прописывания пояснений прямо в компоненте фильтра с жесткой привязкой к названиям свойств (самый простой вариант, но самый не гибкий) и до доработки стандартных полей свойств инфоблоков (это уже надо лезть в ядро, что крайне не желательно). В промежутке — все, на что хватит фантазии, так как можно написать не только свой шаблон, но и компонент и целый модуль.

          Ответить

  • Антон

    |

    Подскажите, есть категории, в них подкатегории, в настройках стоит чтобы товары из подкатегорий в категориях не отображались... , но умный фильтр все равно отображается даже в тех категориях где нет товаров. Как его отключить, чтобы он появлялся только в тех категориях где фактически есть товары? Спасибо за развернутый ответ!!

    Ответить

    • Дмитрий Акифьев

      |

      Никак. Для вывода фильтра нет условий, он показывается на всех страницах, где выводится компонент списка товаров, даже если в списке пусто.

      У правильного магазина не должно быть пустых категорий. Если в категории нет товара, то лучше отключайте и саму категорию. Если есть категории, в которых только подкатегории и нет товаров, то лучше всего показывать товары из активных подкатегорий. Вообще считается лучше для продаж, если товары показываются на всех страницах магазина, вдруг будет спонтанная покупка, или просто посетитель увидит товар, который прямо сейчас не ищет, но хочет купить, просто не знает, что он у вас есть. Поэтому лучше включить отображение товаров из активных подкатегорий в настройках каталога.

      Надеюсь ответ достаточно развернутый, как и просили.

      Ответить

      • Антон

        |

        Нет, ну сделать то можно... Нужно кастомизировать шаблон компонента каталога, перед кодом вызова фильтра нужно поставить проверку на наличие товаров в разделе, вот как это всё реализвать... вывод кучи товаров из подкатегорий мне кажется не очень полезно для SEO

        Ответить

        • Дмитрий Акифьев

          |

          Если Вы и так все знаете про кастомизацию и SEO, то зачем все эти вопросы? Делайте кастомизацию. Я программированию под Битрикс не обучаю, поэтому в этом вопросе Вам не помогу. Типовыми настройками Вы никак фильтр на пустых разделах не отключите, без вариантов.

          Ответить

    • Дмитрий Акифьев

      |

      В настырности Вам не откажешь :)

      Кстати, задавая вопросы предупреждать надо, что фильтр переносился на страницу не комплексного компонента Каталог, тогда было бы понятнее в чем проблема. Была и у меня такая проблема, когда приходилось прописывать некоторые настройки вручную, так как фильтру их просто брать неоткуда, когда он на главной.

      Я бы еще для лучшего восприятия сделал у всплывашек количества выбранного фильтром товара сделал z-index побольше, сейчас они перекрываются карточками товаров.

      Ответить

  • Алексей

    |

    Кстати — не совсем фильтр работает.

    При подборе параметров он сразу отбирает количество и показывает сколько найдено.

    Если перетащить на другое место — не показывает.

    Ответить

    • Дмитрий Акифьев

      |

      Значит просто есть какой-то javascript файл, который надо подключать дополнительно. В каталоге все само подключается, а если Вы переносите фильтр куда-то еще, то сами должны позаботиться, что на странице подключаются все нужные файлы (JS и CSS)/

      Ответить

      • Алексей

        |

        эта фишка не работает просто при переносе с места на место именно в каталоге

        (делал всё по Вашему видео)

        Ответить

        • Дмитрий Акифьев

          |

          Значит есть какие-то нюансы того места, куда переносите фильтр. Я вот так, издалека, не могу определить в чем проблема. Раз уж занялись разработкой под Битрикс, то ищите самостоятельно проблему, я только показал один из способов переноса. Ваша проблема скорее всего связана с работой javascript фильтра, это все, что я могу сказать хоть с какой-то долей весомой долей вероятности.

          Я уже сказал, что не обучаю программированию. Могу только порекомендовать хорошие курсы для разработчиков от самого 1С-Битрикс.

          Ответить

  • Алексей

    |

    Спасибо за урок!

    Хоть не умный — какой нибудь фильтр на главную можно вытянуть?

    Кстати, что интересно — умный на главной параметры все подтягивает верно, туда бы просто добавить возможность вывода результатов на страничке /catalog/

    Ответить

    • Дмитрий Акифьев

      |

      Делайте свой компонент, реализуйте в нем нужную логику (из каких инфоблоков что берет, как фильтрует, сортирует и т.д. ), делаете для этого компонента шаблоны и выводите все это безобразие на любой странице.

      Как перенести стандартный умный фильтр из каталога я не расскажу, тут работать много надо, а я не обучаю программированию.

      Ответить

  • Анисия

    |

    Дмитрий, Ваши уроки появляются именно тогда, когда нужно!) Это здорово, спасибо ) Могли бы подсказать, как сделать так, чтобы фильтр все же показывался на других статичных страницах? Очень нужно сделать, например, на главной...

    Ответить

    • Дмитрий Акифьев

      |

      Умный фильтр работает в жесткой сцепке с компонентом списка товаров. Если на странице нет списка товаров, то и отбирать нечего и фильтр бесполезен. Его можно вывезти на главной, он даже передаст свои настройки в адресную строку, но отбирать будет нечего. Если нужно показывать фильтр на главной, то вероятно Вы должны настроить и отображение каталога не со станицы /catalog/ как это сделано в типовом решении, а с корня сайта.

      Ответить

  • Евгений

    |

    Дмитрий, огромное спасибо за урок! Как всегда Ваши уроки понятны и весьма ценны.

    Ответить

Написать комментарий