[FlatFilters] Первая успешная интеграция на коммерческий сайт.

Приветствую, наконец-то я довёл #FlatFilters до вменяемого состояния и даже протестировал его работу на боевом сайте, который находится у меня в поддержке.

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

В первой версии сайта я использовал связку компонентов mFilter2 + msProducts + pdoPage. На страницу одновременно выводилось по 5 товаров. Результаты загрузки были такими
<!-- SQL: 2.0260 s (201), PHP: 0.5849 s, MEM: 41 476 KB, ALL: 2.6109 s (cache) -->
В новой версии сайта используется связка FlatFilters + Кастомный сниппет рендеринга. Результаты такие
<!-- SQL: 0.0105 s (91), PHP: 0.2230 s, MEM: 31 232 KB, ALL: 0.2335 s (cache) -->
При этом на старом сайте фильтрация происходит по 3-м параметрам, а на новом по 6-ти. Опции и ТВ не используются, однако для новых фильтров это всё равно не имело бы значения, так как данные предварительно заносятся в отдельную таблицу.

Какие задачи решает новый компонент?
1. Ускорение загрузки страницы.
2. Увеличение скорости фильтрации.
3. Фильтрация пользователей.
4. Возможность добавить фильтрацию по произвольному параметру через плагин, своего рода SimpleSearch на минималках.
5. Установка фильтров по умолчанию.
6. Динамическое добавление параметров фильтрации, правда это скорее альтернатива возможности указать в параметрах вызова сниппета where, tvFilters, templates и т.п.
7. Аналогично можно менять выводимы значения фильтров.
8. Пробрасывать в чанки дополнительные параметры через плагин.
9. Возможность сортировать выводимые значения как угодно, тоже через плагин.

Подробнее все кейсы распишу в документации, которая, надеюсь, скоро появится.

Компонент пока доступен по ссылке.
Артур Шевченко
25 марта 2024, 20:32
modx.pro
2
609
+7
Поблагодарить автора Отправить деньги

Комментарии: 8

Александр Мельник
26 марта 2024, 08:46
0
Цифры выглядят впечатляюще.
Пока документация не готова, есть пара вопросов.
1) Вы пишите —
Опции и ТВ не используются
но лично я воспринимаю фильтр как инструмент поиска по характеристикам (ну или в терминологии минишоп опциям). А что же тогда фильтрует фильтр, если нет опций?

2)
Фильтрация пользователей.
Не совсем понимаю, если можно то хоть пару строк. Что вообще такое фильтрация пользователей? Зачем она может применятся?

3)
Возможность добавить фильтрацию по произвольному параметру через плагин, своего рода SimpleSearch на минималках.
Часто использую simplesearch для реализации простого поиска по ресурсам сайта. Он дает форму для поиска и сниппет для показа результатов. Что тогда такое «фильтрацию по произвольному параметру через плагин» и в чем его схожесть с simplesearch?

4)
Пробрасывать в чанки дополнительные параметры через плагин.
Это речь о каких то конкретны странных чанках? Иначе почему параметры в них нужно пробрасывать через плагин, ведь все чанки modx поддерживают передачу параметров из коробки.

Спасибо.
    Артур Шевченко
    26 марта 2024, 10:16
    0
    Начнём по порядку.

    1. Опции и ТВ не используются конкретно на этих сайта, которые я взял для сравнения. Так-то сам компонент умеет работать и с ТВ, даже miigx, и с опциями.

    2. Фильтрация пользователей нужна, когда имеет место ручная их модерация. В моём случае, нужно проверять паспортные данные присланные в виде фото.

    3. Схожесть с SimpleSearch в том, что поиск происходит с помощью оператора LIKE. Никакой формы и сниппета нет. Суть кейса в том, что мне нужно было сделать поиск по определенным полям в уже отфильтрованных данных. Условно есть фильтр Статус и нужно найти все товары в статусе 1, которые загрузили пользователи с фамилией Иванов. Вот фамилия и есть произвольный параметр. Можно было бы и Фамилию сделать фильтром, но список был бы длинным и неудобным.

    4. Есть сниппет ffFiltering, аналог mFilter2, в его чанки можно пробросить данные через вызов сниппета, а есть сниппет, который отвечает за рендер результатов, он вызывается каждый раз, когда задаются новые условия в фильтрах и вот в его чанк можно пробросить параметры только через плагин.
      Александр Мельник
      26 марта 2024, 10:36
      0
      Спасибо.
      Из ваших ответов я делаю два вывода.
      1) Ваш компонент это не только фильтр для товаров минишопа (которым я его считал). Это фильтр для любых ресурсов modx. например modUser.
      2) Ваш компонент предназначен не только для работы на публичной части, но и в админке. Потому что просто представить не могу, зачем кому то на публичной части давать возможность искать пользователей, фильтровать их и модерировать, такие вещи должны происходить в закрытых от публичного доступа местах.

      Оба мои утверждения справедливы?
        Артур Шевченко
        26 марта 2024, 13:02
        0
        Из коробки компонент может фильтровать обычные ресурсы, товары и пользователей, но есть возможность написать свои обработчики и фильтровать вообще всё что угодно.

        Если речь про админку Modx, то нет, там он не работает. А что касается моих кейсов, то да эта закрытая часть сайта, но всё же фронт.

        И ко мне можно обращаться на ТЫ)))
      Дима Касаткин
      26 марта 2024, 14:43
      0
      Приветствую! Отличная новость про фильтры, впечатляющая скорость, жду релиза с нетерпением, с удовольствием поучаствую в развитии (в документации, и как ещё получится). Потому что развитие системе поиска и фильтров, которые уже есть для MODX, давненько не хватало!

      Тоже есть пара вопросов:
      Пробрасывать в чанки дополнительные параметры через плагин.
      1. @Артур Шевченко, а сниппет(ы) компонента умеет(ют) передавать в чанки все указанные в вызове параметры? На мой вкус при сборке сайта очень частно нужно добавить какие-то параметры сверх тех, что предусмотрены документацией и влияют на логину сниппета, а просто доступна в чанке для проверки или использования значения.

      Так, например, умеет делать pdoResources, но не умеет pdoMenu, и это очень не удобно…

      2. Чанки на Fenom поддерживаются? И на квадратном modx-синтаксисе тоже? Разделение на row и outer в наличии, или предлагается на Fenom циклы крутить?))

      3. Понимаю, что внедрение было на MODX2, но много ли логики в компоненте, которая отличается от MODX3 и какие перспективы по адаптации? На MODX3 переезжают уже многие, и ещё больше тех кто ждёт когда стоп-факторы будут сняты. Фильтрация — один из!
        Артур Шевченко
        26 марта 2024, 14:50
        +1
        На первый вопрос я уже ответил
        Есть сниппет ffFiltering, аналог mFilter2, в его чанки можно пробросить данные через вызов сниппета, а есть сниппет, который отвечает за рендер результатов, он вызывается каждый раз, когда задаются новые условия в фильтрах и вот в его чанк можно пробросить параметры только через плагин.
        К этому могу добавить только, что «сниппет, который отвечает за рендер результатов» задается в параметрах ffFiltering.

        По поводу чанков на Fenom. Собственно, я только с ними и работаю. Циклов никаких не нужно, всё разделяется на чанки.

        Адаптация под Modx 3 будет позже, мне нужно перезагрузиться, а то фиксация на одной задаче плохо влияет на качество реализации.
        Дмитрий Середюк
        27 марта 2024, 00:41
        0
        Доброго времени, какие то зависимости у компонента есть?, мин версия modx? Установил на один сайт словил 500, хотел просто посмотреть javascript
        Подумал что дело в плагине, отрубил его через БД не помогло по прежднему белый 500, запустил откат базы и файлов
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        8