[FlatFilters 1.0.0-pl] Первый релиз.

Приветствую, коллеги. Наконец-то довёл до ума свой компонент фильтрации. Он прошёл модерацию и доступен по ссылке. К сожалению, бесплатно выложить не удалось из-за правил modstore. К компоненту есть достаточно подробная документация.

Для тех, кто впервые слышит про FlatFilters поясню: это альтернатива всем известному компоненту mSearch2. Компонент предлагает другой подход к фильтрации, что приводит как к значительному увеличению скорости фильтрации, так и к ряду особенностей. Это некое компромиссное решение между mSearch2 и сервисами типа ElasticSearch или Sphinx.

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

Преимущества
1. Не требует установки на сервер сторонних библиотек или сервисов типа ElasticSearch или Sphinx.
2. Высокая скорость фильтрации (менее 1 секунды при 100 000 товаров).
3. Простота настройки, при использовании стандартных классов.
4. Фильтрация по множественным значениям.
5. Умеет фильтровать пользователей.
6. Умеет фильтровать по полям тип migx с глубиной вложенности не более 1.
7. Кастомизация логики с помощью плагинов.

Особенности
1. Не умеет показывать количество совпадений по отдельным фильтрам.
2. Умеет блокировать значения фильтров, которые точно вернут пустой результат.
3. Возвращает результат в виде строки со списком id, но не готовый html или объект.
4. Нет встроенного поиска.
UPD: Добавил страницу с mFilters2. Там только фильтры по цене и по родителю, но чтобы понять разницу этого достаточно.
Спасибо за внимание!
Артур Шевченко
18 июня 2024, 12:20
modx.pro
1
1 261
+12
Поблагодарить автора Отправить деньги

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

Алексей
18 июня 2024, 12:32
+2
Интересно посмотреть сравнение по скорости с mFilter2
    Артур Шевченко
    18 июня 2024, 14:03
    +1
    Может быть на досуге, когда будет настроение, добавлю на део-сайте страницу с mFilter2.
    Ivan K.
    18 июня 2024, 12:52
    0
    Скорость впечатляет на демо сайте. Скажите, пожалуйста, а modx3, когда приблизительно будет поддерживать ваш замечательный компонент?
      Артур Шевченко
      18 июня 2024, 14:01
      0
      Чисто теоретически может быть так, что уже поддерживает, так как вроде бы там нет ничего такого, что не поддерживалось бы в Modx 3. Но я не проверял и до конца лета вряд ли буду этим заниматься.
      Miša Bulic
      18 июня 2024, 14:13
      +1
      Здорово, надеюсь MODX 3 будет поддерживаться. По сути только отсутствие mFilter останавливает от перехода на modx3.
        Артур Шевченко
        18 июня 2024, 14:53
        0
        А отсутствие miniShop не останавливает?
          Miša Bulic
          18 июня 2024, 16:09
          +1
          Неа, я от минишопа только галерею и связи товаров использую. Это можно и без него реализовать.
        Ivan K.
        18 июня 2024, 14:38
        0
        Мельком глянул документацию, но не нашел ответа.
        Можно ли фильтровать по TV?

        Все нашел, вроде умеет фильтровать по TV))
          Артур Шевченко
          18 июня 2024, 14:55
          +1
          Умеет, даже по ТВ типа migx с уровнем вложенности не более одного, т.е. migx в migx не потянет. Ну и плагинами вообще можно всё что угодно навертеть.
          Ivan
          18 июня 2024, 20:14
          0
          Давно был нужен. А то mfilter на большом кол-ве товаров просто в шоке от происходящего. И такое ощущение что он не кеширует ничего(( Чисто ИМХО, а то накинутся
            Артур Шевченко
            18 июня 2024, 20:19
            0
            Хочу ещё раз подчеркнуть, это компромиссное решение, при разработке в приоритет ставилась скорость работы и простота интеграции, в ущерб некоторой функциональности.
              Ivan
              18 июня 2024, 20:31
              0
              А какой функциональности идет ущерб, кроме того что не отображается кол-во результатов?
                Артур Шевченко
                18 июня 2024, 20:54
                +1
                Больше вроде никакой)))
                  Ivan
                  19 июня 2024, 10:45
                  0
                  Вам осталось поиск еще запилить) Корзину сделали) Фильтры сделали) Класс
                    Артур Шевченко
                    19 июня 2024, 12:45
                    0
                    Поиск нет смысла пилить. Если делать в рамках Modx, то ничего лучше phpMorphy не появилось, а эту библиотеку использует mSearch2, вряд ли я сделаю лучше. А если использовать ElasticSearch, то это уже решение не для всех, а только для тех у кого VPS.
                  Ivan
                  19 июня 2024, 10:45
                  0
                  А не могли бы вы сказать, через что вы собираете компоненты? Через siteextra?
          Konstantin
          25 июня 2024, 15:39
          0
          Здравствуйте, звучит заманчиво но перед тем как купить ваш плагин хочу понять 2 вопроса:
          1. Совместим ли он с Polylang?
          2. Нужно ли делать индексацию каждый раз при создании нового ресурса?
            Артур Шевченко
            25 июня 2024, 17:25
            0
            Совместим ли он с Polylang?
            Polylang не умеет переводить значения опций, а переводы названий фильтров можно сделать через управление словарями.

            Нужно ли делать индексацию каждый раз при создании нового ресурса?
            Если ресурс создаётся через админку или стандартный процессор — нет не нужно.
              Konstantin
              25 июня 2024, 18:29
              0
              Я не использую minishop, фильтр нужен только для статей-ресурсов, фильтрация нужна будет по ТВ полям которые polylang кажется переводит. И да — создаваться ресурсы будут через админку стандартным путем. Спасибо за ответ!
                Артур Шевченко
                25 июня 2024, 19:09
                0
                Я не использую minishop, фильтр нужен только для статей-ресурсов, фильтрация нужна будет по ТВ полям которые polylang кажется переводит.
                В любом случае, если это текстовые значения индексировать их плохая идея, так как по факту значение одно, просто на разных языках. Я бы заменил ключом, а переводы добавил в словари.
                Сергей Карпович
                25 июня 2024, 20:33
                0
                Polylang не умеет переводить значения опций, а переводы названий фильтров можно сделать через управление словарями.
                Значения опций на другом языке указывается в локализации, просто заполняются на нужном языке
                Скрин: disk.yandex.ru/d/rzQVfNHcuQmSAg
              Егор
              28 июня 2024, 04:23
              0
              а подскажите, пожалуйста, если установлен mSearch2 (для поиска) ваше решение можно использовать параллельно, только для фильтрации? И еще, не нашел в документации слов про «опции». С опциями товаров будет работать? Или у вас все на TV сделано? Так же, если можно, добавьте пожалуйста несколько скриншотов из настройки компонента в документацию:

              нажав жёлтую (или оранжевую или вторую слева в колонке Действия)
              Мне не хватает силы своего воображения, чтобы представить это. Растерялся :_(

              Теперь добавим блок для показа метаинформации: количество результатов, выбранные фильтры, время фильтрации.
              А можно простецкий пример на fenom? Сэкономит время.
                Здоров Александр
                28 июня 2024, 09:29
                +1
                1. да, использовать для фильтрации и для поиска возможно, будет работать через параметр &parents
                2. да, фильтровать по опциям можно — параметр filters, вот пример парочки фильтров
                &filters=`ms|price:number,msoption|razmer,tv|fil_top_row
                по остальному — смотрите статьи в интернете, одно из лучших умений начинающего программиста — гугление
                  Здоров Александр
                  28 июня 2024, 09:41
                  +1
                  я извиняюсь, не глянул что ветка про другой компонент совсем, весь ответ про стандартный mfilter

                  не нашел как скрыть/убрать комментарий — и время редактирования тоже истекло(
                    Егор
                    28 июня 2024, 09:42
                    0
                    спасибо за ответ. На счет «гугления» — я пытаюсь делать на zoomx. Некоторые вещи не смог победить с ним, вроде vendor.name в чанке. Все время выводит единицу. Как только не пробовал. Да и тот же mSearch2, не получилось у меня вывести количество результатов. Гуглил, использовал и total, и totalvar…

                    Я предполагаю, что если бы многие были чуточку «добрее», не составило бы труда сделать примеры или дать больше информации. Кроме того, зачем я, или кто-нибудь еще будет писать в поддержку автору материала, когда перед глазами будут готовые примеры хотя бы на fenom. Но видимо, им нравится постоянно отвечать, вместо того, чтобы сделать подробную документацию один раз :)
                    Артур Шевченко
                    29 июня 2024, 11:29
                    +1
                    ваше решение можно использовать параллельно
                    Можно

                    С опциями товаров будет работать?
                    Это настолько само собой разумеется, что я не стал писать.

                    Мне не хватает силы своего воображения, чтобы представить это.
                    А зачем это воображать? Установите компонент на тестовом сайте на modhost и посмотрите.

                    А можно простецкий пример на fenom?
                    Читайте документацию
                    Ivan
                    06 июля 2024, 14:09
                    0
                    Честное слово. Вашему компоненту не хватает примера использования.
                    Например как его прикрутить к шаблону каталог и что бы он работал во всех уровнях влажности. Это же самая базовая необходимость. Ну что бы люди могли сравнить его например с mfilter2. Вообще, чтобы писать документацию, как мне кажется, нужен скил. В данном варианте получается человек устанавливает ваш компонент и сидит страдает, т.к. функционал не заводится из коробки) Любому продукту важно продвижение или демонстрация как это сделать. Или логика как у похожих дополнений. Тут к сожалению такого нет. Надеюсь когда у вас будет время вы сможете что-нибудь такое придумать.
                    Наверно если на странице modstore будет написано Быстрый старт:
                    Сделайте это это и это и все у вас в каталоге рабоатет фильтр, он будет более привлекательным покупателям.

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

                    Если его попробовало 30 человек и все с легкостью его используют — вопросов нет. Значит проблема во мне.
                      Артур Шевченко
                      07 июля 2024, 09:44
                      0
                      Например как его прикрутить к шаблону каталог и что бы он работал во всех уровнях влажности.
                      Вот тут написано как подготовить шаблон, а вот тут как настроить конфигурацию.

                      А отнимать ваше время, хоть вы в чате отлично помогаете, не хочется.
                      Я с радостью помогаю всем, кто желает разобраться, так что если есть конкретные вопросы милости прошу в Телеграм.
                        Ivan
                        07 июля 2024, 10:33
                        0
                        Артур. По твоему не логично что если ты вставляешь код из документации в раздел Каталог, то он должен работать и в каталоге и в его подкатегориях? Дополнение не только должно быть классным, но и удобным.
                        Я без претензий. Я наоборот хотел помочь.
                          Артур Шевченко
                          07 июля 2024, 15:01
                          0
                          По твоему не логично что если ты вставляешь код из документации в раздел Каталог, то он должен работать и в каталоге и в его подкатегориях?
                          Учитывая концепцию компонента, нет нелогично, в подкатегориях могут быть разные наборы фильтров и разные конфигурации соответственно.
                          Кроме того, у подкатегорий может быть другой шаблон, а все шаблоны, в которых необходимо вывести фильтры, нужно перечислить в системной настройке ff_tpls.
                            Ivan
                            07 июля 2024, 16:38
                            0
                            Так «Могут быть разные работы фильтров» это вторично. Если пользователю нужны разные наборы фильтров, то как раз логично что он будет настраивать это.
                            Сейчас логика такая: если у нас в категории товаров есть подкатегории вашему компоненту пофиг на это, и он товары из них не подтягивает.
                            А логично как раз то, что он будет учитывать подкатегории и фильтровать все эти товары. А если нам нужно что бы использовалось какое-то там другое правило мы как раз можем указать другую конфигурацию, которая как раз будет иметь какое-то там кастомное поведение.

                            Не буду больше утомлять. Если тебя как автора все устраивает, то мои рассуждения ни к чему.
                              Артур Шевченко
                              08 июля 2024, 10:21
                              0
                              Сейчас логика такая: если у нас в категории товаров есть подкатегории вашему компоненту пофиг на это, и он товары из них не подтягивает.
                              Если у тебя не подтягиваются товары из подкатегорий, проверь включена ли карта ресурсов. Без неё не будет работать метод getChildIds().
                      Майкл
                      02 августа 2024, 02:54
                      0
                      Добрый день! Перед покупкой хочу уточнить два момента
                      Совместим ли компонент с php 8+,
                      Совместим ли компонент с seofilter?
                        Артур Шевченко
                        02 августа 2024, 10:14
                        0
                        Приветствую, не тестировал ни одно, ни другое, так что не рекомендую покупать.
                        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                        37