[FlatFilters] Первая бета ждёт смелых и отчаянных.

Приветствую! Мы строили, строили и наконец построили. Рад представить вашему вниманию первого реального конкурента mFilter2. Пока это только бета версия, поэтому кому-то может показаться, что функционала маловато, пожелания принимаются в комментариях.

Для корректной работы требуется версия PHP не ниже 7.4.

Зависимости
  • SendIt
  • pdoTools
  • MiniShop2

!!! ВАЖНО!!! Функции поиска по сайту в данном компоненте нет.

Преимущества перед конкурентами
  • Не требует установки на сервер сторонних библиотек или сервисов типа ElasticSearch или Sphinx
  • Высокая скорость фильтрации (менее 1 секунды при 100 000 товаров)
  • Простота настройки
  • Фильтрация по множественным значениям
Начало использования
  1. Установить
  2. Создать конфигурацию
  3. Произвести индексацию
  4. Создать шаблон страницы фильтрации
Пример вызова сниппета
{'!ffFiltering' | snippet: [
        'configId' => 10,
        'limit' => 8,
        'parents' => 0,
        'sortby' => ['Data.price' => 'ASC'],

        'wrapper' => '@FILE chunks/ffouter.tpl',
        'empty' => '@FILE chunks/ffempty.tpl',
        'priceTplOuter' => '@FILE chunks/ffrange.tpl',
        'favoriteTplOuter' => '@FILE chunks/ffcheckbox.tpl',
        'newTplOuter' => '@FILE chunks/ffcheckbox.tpl',
        'popularTplOuter' => '@FILE chunks/ffcheckbox.tpl',
        'colorTplOuter' => '@FILE chunks/ffcheckboxgroupouter.tpl',
        'colorTplRow' => '@FILE chunks/ffcheckboxgroup.tpl',
        'defaultTplOuter' => '@FILE chunks/ffselect.tpl',
        'defaultTplRow' => '@FILE chunks/ffoption.tpl',
        'publishedonTplOuter' => '@FILE chunks/ffdaterange.tpl',

        'returnIds' => 0,
        'element' => 'msProducts',
        'tpl' => '@FILE chunks/msproducts/filter-item.tpl',
        'includeTVs' => 'modifications',
        'includeThumbs' => 'small',
        'showUnpublished' => 1
]}
Ссылка на видео презентацию

Ссылка на компонент

После проведения боевых тестов и доработок, компонент станет платным.
Артур Шевченко
22 декабря 2023, 20:58
modx.pro
2
3 298
+11
Поблагодарить автора Отправить деньги

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

Сергей Карпович
23 декабря 2023, 00:12
0
Очень интересно. Особенно кайфово с конфигурациями сделано.
Но есть куча сайтов — каталогов без minishop, будет ли в будущем поддержка фильтрации обычных ресурсов?
Также есть потребность в сортировке ресурсов по значениям MIGX полей.
    Артур Шевченко
    23 декабря 2023, 13:19
    0
    В будущем планирую сделать возможность фильтровать по любыл таблицам с использованием плагинов.
    Сортировки по migx, опциям и ТВ не будет, так как это может сильно замедлить работу фильтров.
      Алексей Смирнов
      23 декабря 2023, 14:52
      0
      Сортировки по migx, опциям и ТВ не будет
      А вот это плохая новость. редко требуется сортировка по этим полям. Хоть и редко — печаль что нельзя будет сделать.
    Наумов Алексей
    23 декабря 2023, 12:30
    0
    На этапе создания конфига нужно добавлять поля, по которым фильтруем.
    Если делаем много конфигов (для разных категорий, я же верно понял?) — придется много раз одни и те же поля добавлять. Предложил бы сделать отдельный список настроенных полей (фильтров), а уже в конфиге из него выбирать в 1 клик.
      Артур Шевченко
      23 декабря 2023, 13:16
      1
      0
      Там есть функция копирования конфигурации.
        Алексей Смирнов
        23 декабря 2023, 14:53
        0
        Предложу дополнительно подумать над фу-м именно наследования параметров по иерархии.
          Артур Шевченко
          23 декабря 2023, 16:56
          0
          По иерархии вряд ли, а вот наследование одной конфигурации другой по id можно сделать
      Сергей Самусев
      24 декабря 2023, 21:22
      0
      Ошибки на MODX 2.8.4
      При создании конфигурации.

      на PHP 8.0

      на PHP 7.4
      Константин Ильин
      26 декабря 2023, 19:04
      +1
      Чуть и я напишу
      Попробовал установить, так скажем быстрый старт вроде норм, сам компонент запустился, но не фильтровал, оно понятно не было SendIt.

      Пошел устанавливать SendIt, открываю страницу, а там начинается ад из сообщений «Повторная отправка формы через ** секунд»
      disk.yandex.ru/i/89ZDlaiewiKMUA

      Css от SendIt изменяет css сайта, первое, что бросилось в глаза размер .container увеличился
      В журнале ошибки disk.yandex.ru/i/4sV0-QJWMNpByA

      — сам вызов и настройка вроде хорошо-просто
      — страница открывается быстро

      К чему я это все, эта зависимость от SendIt удручает. На готовых сайтах могут проблемы от обязанности использовать SendIt. Наврно должен быть свой JS
        Артур Шевченко
        26 декабря 2023, 20:07
        0
        При правильной настройке ошибок типа «Повторная отправка формы через ** секунд» быть не должно

        Css от SendIt изменяет css сайта, первое, что бросилось в глаза размер .container увеличился
        Это решается удаление пути к файлам стилей из системной настройки. Но скорре всего в SendIt 1.1.1 удалю значение.
          Константин Ильин
          27 декабря 2023, 10:12
          0
          При правильной настройке ошибок типа «Повторная отправка формы через ** секунд» быть не должно
          При правильной настройки SendIt или FlatFilters?

          Это решается удаление пути к файлам стилей из системной настройки.
          Я в целом так и подумал(т.к. имею опыт), да я мог бы и в плагине найти строчку или еще как то, т.к. умею, но обычным пользователям же нужно: вызвало и чтоб заработало :)
            Артур Шевченко
            27 декабря 2023, 11:08
            +1
            При правильной настройки SendIt или FlatFilters?
            FlatFilters. В версии SendIt 1.1.0 появилась возможность отправлять формы по клику, это поможет избежать подобных ошибок.

            обычным пользователям же нужно: вызвало и чтоб заработало
            Я понимаю, поэтому это только бета и она будет дорабатываться, в том числе благодаря твоим комментариям. Так что спасибо.
              inna
              05 февраля 2024, 17:40
              0
              в indexing.class.php 61-я строка надо бы исправить на $className = «ffIndex».$this->config['id'];
              что-то не удаляется лозунг «Повторная отправка формы через ** секунд» через удаление к путям css
        Константин Ильин
        28 декабря 2023, 13:15
        0
        На странице где нет FlatFilters
        disk.yandex.ru/i/rfSXnuwCruqBQQ
        Alexandr
        03 января 2024, 17:32
        0
        Решил протестировать на рабочем сайте. При попытке добавить конфигурацию белая страница. Думаю если включить вывод ошибок будет такая же ошибка как писали выше.
        MIGX поля на сайте есть, и не одно.
        modx 2.8.4
        php 7.4
          Руслан Алеев
          19 января 2024, 17:30
          0
          Фильтр без TV — это оооочень странное решение для MODX =)
          Неправильно прочитал, извиняюсь.
            Артур Шевченко
            19 января 2024, 18:11
            +1
            В целом я согласен, поэтому фильтрация по ТВ есть, сортировки по ним нет.
            Сергей
            13 февраля 2024, 15:23
            0
            Что-то первое знакомство не задалось(
            Решил установить на сайт (у сайта изменены пути) при установки оба компонента SendIt и flatfilters, assets установились в нужную папку (она у меня по другому называется) а вот core создал свою папку core. Не беда перенес в ручную) Конфик появился, могу его создать, НО не могу удалить и не могу и проиндексировать. В логах ошибка Uncaught (in promise) SyntaxError: Unexpected end of JSON input at functions.min.js:1:188
            На чистую систему не ставил, сказать будет работать или нет, не могу. Если все должно работать как на видео, то это круто. Но хотелось бы развития и увидеть функционал SeoFilter и может даже какой ни будь умный поиск.
            И да у SendIt почему-то по умолчанию стоит путь assents (мне кажется большинство их меняет, с целью безопасности).
              Артур Шевченко
              13 февраля 2024, 22:06
              0
              Проблему с core я знаю, только не знаю как пофиксить, надо сборщик ковырять.

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

              Что касается развития, то оно будет в ближайшие недели, только только ни функционала поиска, ни функционала SeoFilter не будет. Поиск в mSearch2 хорошо работает. SeoFilter надеюсь будет работать и с FlatFilters.
                Николай Савин
                14 февраля 2024, 08:54
                0
                SeoFilter надеюсь будет работать и с FlatFilters.
                Я тебя умоляю, @Евгений Шеронов даже не знает о существовании твоего компонента. И под него что-то делать точно не будет. Он вообще с MODX не работает.
                  Артур Шевченко
                  14 февраля 2024, 09:18
                  +1
                  Я ему PR зашлю
                    Николай Савин
                    15 февраля 2024, 07:33
                    0
                    Там на компоненте уже года два пометка на удаление стоит.
                    Насколько я знаю, Женя давно задумал seoFilter Pro и опять же есть некое наитие, что работа скоро начнется.
                      Артур Шевченко
                      15 февраля 2024, 14:37
                      0
                      Хорошо. Уговорил. Напишу свой вариант. Потом когда-нибудь.
                    Евгений Шеронов
                    16 февраля 2024, 00:01
                    +2
                    Всё я знаю :)

                    Если конечно, буду делать SeoFilter PRO, то туда как раз и добавлю построение фильтров на фронт, так как почти всё для этого уже есть даже в базовой версии.
                Сергей
                04 марта 2024, 14:30
                +1
                В общем наконец-то добрался, есть конечно несколько косяков.
                1. При копировании конфигурации (Родители по крестику не удаляются, не только при копировании)
                2. В настройках SendIt (надо выставлять большое значение «кол-во отправки форм» и убирать паузу) иначе закидаем кучей всплывашек.
                3. Не хватает возможности прописать названия поля (Цвет, размер) есть поле значение, для чего оно, я не понял. (Прописывал там название, но тогда каталог пропадает, видимо это сделано для значения по умолчанию, но тогда и фильтр должен сразу срабатывать на него — не проверял).
                4. Не хватает возможности менять опции местами (и надо подумать о порядки этих опций, есть проблема с размерами).
                5. Не хватает фильтрации по значениям из msoptionprice2 (на сколько я понял, такого нет)
                6. Ну и как говорил ранее не хватает функционала SeoFilter (только при создании таких фильтров, чтобы это было как современное решение в SEO, надо чтобы сами фильтры были в виде ссылок)
                7. Что касается поиска, то наверное, когда ни будь кто-то сделает умный поиск с исправлением опечаток с дописыванием запросов…
                8. Не совсем удобно выбирать правила для каждой категории, если их 10-20, то можно сделать разными шаблонами или доп. полем, но если категорий 200 и более, то будет проблематично за всеми уследить. Т.е. надо сделать опции по умолчанию или скрывать их, но товары должны выводиться, если фильтра сделаны для категории, то нужно отображать.
                Скорость работы супер, сейчас гружу 16 к товаров для теста. (пока только гружу)
                Жду платный релиз, буду одним из первых покупателей!
                  Артур Шевченко
                  04 марта 2024, 15:06
                  0
                  Не хватает фильтрации по значениям из msoptionprice2 (на сколько я понял, такого нет)
                  Фильтрация по опциям модификаций, это фильтрация не товаров, а модификаций. Выход тут простой: либо писать отдельный класс для фильтрации модификаций, либо указывать все значения доступные в модификациях для базового товара и фильтровать по ним (это возможно).

                  Не хватает возможности прописать названия поля (Цвет, размер)
                  Можно указать название в лексиконах, если не указать там ключ выводится.

                  1. При копировании конфигурации (Родители по крестику не удаляются, не только при копировании)
                  2. В настройках SendIt (надо выставлять большое значение «кол-во отправки форм» и убирать паузу) иначе закидаем кучей всплывашек.
                  Это я уже пофиксил.

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

                  8. Не совсем удобно выбирать правила для каждой категории, если их 10-20, то можно сделать разными шаблонами или доп. полем, но если категорий 200 и более, то будет проблематично за всеми уследить. Т.е. надо сделать опции по умолчанию или скрывать их, но товары должны выводиться, если фильтра сделаны для категории, то нужно отображать.
                  Не понял какой кейс не удаётся реализовать?

                  4. Не хватает возможности менять опции местами (и надо подумать о порядки этих опций, есть проблема с размерами).
                  Придумаю что-нибудь.
                    Сергей
                    04 марта 2024, 15:11
                    0
                    Не понял какой кейс не удаётся реализовать?
                    Как я понял, надо для каждой категории создавать свой набор и вывод каталога? Если да, то что делать если категории появляются постоянно и из 200 штук например. Если это клиентский сайт, то в ручном режиме это будет делать сложно.
                      Артур Шевченко
                      04 марта 2024, 17:24
                      0
                      Не, для каждой категории необязательно создавать. Если у всех категорий одинаковые опции, можно создать одну конфигурации без указания родителей. Опции привязаны к категориям, а фильтры к опциям, поэтому я добавил возможность указывать родителей, чтобы в категории выводились только те фильтры, которые в ней есть, а не все подряд.
                        Сергей
                        05 марта 2024, 10:42
                        0
                        Может я что-то не так делаю, но у меня не все товары выводятся (можно сказать что вообще не выводятся). Я сейчас для теста сделал конфигурацию с ценой, родителя не указал и у меня не выводятся товары с не указанной ценой. Ладно буду ждать стабильную версию. Пока-что это танцы с бубном)
                  Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                  32