Автор дополнения
Артур Шевченко
Пакетов
31
Закачек
3 486
Обычно отвечает в течение суток
Автор дополнения
Пакетов
31
Закачек
3 486
Обычно отвечает в течение суток
Версия 1.1.1-pl
Дата выпуска 03.09.2026
Загрузки 23
Просмотры 3 471
Это альтернатива всем известному компоненту 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. Нет встроенного поиска.

1.1.1-pl

  • Исправлено: фильтр с несколькими значениями (name="key[]", штатный чанк ffcheckboxgroup) давал пустую выдачу, если тип фильтра в конфигурации был не «Множественный выбор». Массив уходил в условие «= :key», которое PDO не может выполнить: заход по ссылке «?key=1,2» работал, тот же фильтр через AJAX-форму — нет. Теперь набор значений всегда сравнивается через IN, независимо от типа.
  • Несоответствие типа фильтра и разметки формы пишется в лог (уровень warning, тэги flatfilters/catalog/filter) — с ключом, типом и значениями, чтобы такие конфигурации было видно, а не искать причину пустой выдачи вручную.
  • Пустой список значений больше не порождает «IN ()» — синтаксическую ошибку MySQL, роняющую весь запрос.
  • Убраны PHP 8 warning'и «Undefined array key» при обращении к настройкам фильтра без значения по умолчанию.

1.1.0-pl

  • Логирование переведено на mxLogger (единственный приёмник). Добавлен класс ffLogger (core/components/flatfilters/ffLogger.class.php), делегирующий записи сервису mxLogger; если он не установлен — один раз предупреждает в журнале MODX и молчит.
  • Новые настройки: ff_debug (вкл/выкл, включено из коробки) + ff_log_level (минимальный уровень debug|info|warning|error, по умолчанию error). Консистентно с mxlogger.min_level.
  • Блокировка недоступных значений — «excluding self» по строкам индекса (паритет с MODX 3): выбранная группа не блокируется, для MIGX-полей значения считаются корректно.
  • Кэш значений фильтров пустой формы (сброс при переиндексации) — ускоряет заход на большой каталог.
  • Сортировка sortby: whitelist допустимых ключей (защита ORDER BY от инъекции).
  • Исправлена индексация MIGX-полей при имени TV с подчёркиванием.
  • Диапазон дат: одна переданная граница = весь день (конец дня 23:59:59).

1.0.5-pl

  • Добавил JS событие 'ff:before:reset'.

1.0.4-pl

  • Переработал блокировку недоступных значений.
  • Немного изменил логику работы обработчика ответов сервера в JS.
  • Добавил в метаданные таблиц движок InnoDB.

1.0.3-pl

  • Мелкие правки в JS.
  • Добавил установку количества результатов при возвращении id из события ffOnAfterFilter.
  • Добавил обнуление OFFSET при обновлении фильтров.
  • Добавил проверку получения пользователя при индексации ресурсов.
  • Добавил параметр excludeFilters вызова ffGetFilterForm для исключения фильтров без необходимости создавать новую конфигурацию.

1.0.2-pl

  • Добавил системные настройки ff_resource_types и ff_user_types.

1.0.1-pl

  • Небольшая оптимизация JavaScript.
  • Добавил обратные кавычки в запрос получения ключей фильтров.
  • Добавил проверку на пустоту для полей extended.

1.0.0-pl

  • Добавил системное событие ffOnBeforeSetIndexValue.

1.0.0-rc5

  • Добавил системное событие ffOnAfterGetFilterValues.
  • Сделал свойство $config в классе IndexingResources публичным.
  • Добавил проверку существования объект в функции получения родителей.
  • Переписал метод getParentIds в классе FlatFilters.
  • Убрал вывод выбранного варианта сортировки в списке выбранных фильтров.
  • Добавил преобразование json в массив для параметра sortby.
  • Сделал свойство tokens публичным.

1.0.0-rc4

  • Исправил ошибку в основном классе.

1.0.0-rc3

  • Добавил резолвер на удаление таблиц.
  • Добавил обработку события submit в JS.
  • Добавил системные события ffOnBeforeFilter, ffOnAfterFilter и ffOnBeforeRender.
  • Добавил проверку количества фильтров, чтобы не блокировать значения при 1 фильтре.
  • Добавил в конфигурацию JS параметр hideClass для скрытия элементов.
  • Добавил передачу пресетов в JS.
  • Добавил системную настройку со списком пресетов.
  • Добавил обработку изменения лимита на странице.
  • Добавил индексирование пользователя при сохранении.
  • Добавил в JS метод updateFilters(), позволяющий перефильтровать ресурсы.
  • Изменил метод JS метод reset(), чтобы он триггерил метод update().
  • Оптимизировал построение url.
  • Удалил старые файлы
  • Поменял сравнение $value на более строгое в методax getAllFiltersValue(), getFilterSql() и процессорах  create и update в методе prepareDefaultFilters()
  • Добавил событие ffOnBeforeSetFilterConditions()
  • Вынес обновление урла в отдельную функцию
  • Переделал методы индексации indexingDocument и indexingUser под общий формат входных данных - объекты.
  • Добавил передачу парамеров вызова сниппета в чанки.
  • Удалил подключение старого обработчика из процессора индексации.
  • Исправил опечатку в методе decodeJsonValue класса IndexingResources.
  • Добавил передачу пресета в обработчик пагинации через форму или поле.
  • Добавил проверку на 0 в метод removeResourceIndex().
  • Добавил проверку существования пользователя в плагин.
  • Добавил системное событие ffOnBeforeGetFilterValues.
  • Удалил из опций событий параметр FlatFilters.

1.0.0-beta2

  • Добавил проверку наличия конфига migx.

1.0.0-beta

  • Первая сборка.

Последние обсуждения в сообществе MODX.pro