You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Пакет устанавливается стандартным образом из [репозитория](https://modstore.pro/packages/ecommerce/simplefilters) через установщик MODX3.
11
+
Простая фильтрация ресурсов MODX3 и товаров MiniShop3.
12
+
13
+
## Основные свойства
14
+
- Поддержка полей ресурсов, TV и MIGX полей, а также полей и опций товаров MiniShop3.
15
+
- Работает как со стандартными таблицами MODX, так и с собственной индексной таблицей.
16
+
- Поддерживает логику AND и OR.
17
+
- Типы фильтров: чекбокс, радиокнопка, выпадающий список, слайдер для числовых значений (на основе [noUiSlider](https://refreshless.com/nouislider/)).
18
+
- Настройка псевдонимов фильтров в URL.
19
+
- Пагинация (постраничная и кнопкой «Загрузить ещё»).
20
+
- Настраиваемая сортировка и выбор количества на страницу.
21
+
- Системные события для тонкой настройки (тексты фильтров, значения, сортировка полей и т. д.).
12
22
13
23
## Системные настройки
14
24
15
25
| Параметр | Описание | Значение по умолчанию |
16
26
|:----------|:----------|-----------------------|
17
-
| sf_css_path | Путь к JS-файлу относительно корня сайта |`{assets_url}components/simplefilters/js/web/default.min.js`|
27
+
| sf_index_templates | Шаблоны ресурсов, поля которых нужно индексировать ||
28
+
| sf_index_fields | Поля ресурсов, которые нужно индексировать ||
29
+
| sf_index_fields | Путь к JS-файлу относительно корня сайта |`{assets_url}components/simplefilters/js/web/default.min.js`|
18
30
| sf_css_path | Путь к CSS-файлу относительно корня сайта |`{assets_url}components/simplefilters/css/web/default.min.css`|
19
31
32
+
33
+
## Начало работы
34
+
35
+
### Индексирование полей и значений
36
+
По умолчанию компонент работает с таблицей `modx_sf_index`, в которой должны содержаться значения полей для ресурсов, что ускоряет выборку.
37
+
38
+
Для добавления данных нужно заполнить системные настройки `sf_index_templates` и `sf_index_fields`, где указать шаблоны ресурсов, участвующих в фильтрации и поля которые нужно индексировать, соответственно.
39
+
40
+
Используются следующие префиксы:
41
+
- Поле ресурса — **без префикса**
42
+
- TV-параметр — **tv_**
43
+
- MIGX-поле — **migx_**
44
+
- Поле товара MiniShop3 — **ms_**
45
+
- Опция товара MiniShop3 — **mso_**
46
+
47
+
Например, у нас установлен MiniShop, шаблоны товаров 4 и 5 и нам нужно фильтровать по:
48
+
- цене (поле товара **price**)
49
+
- производителю (поле товара **vendor_id**)
50
+
- новинке (поле товара **new**)
51
+
- цвету (поле товара **color**)
52
+
- материалу (опция товара **material**)
53
+
- остатку (tv-параметр **inctock**)
54
+
- полю «Высота» из MIGX-TV **chars*, у которого названия параметров указаны в поле `title`, а значения в `value`
55
+
56
+
В `sf_index_templates` указываем `4,5`, а в `sf_index_fields` так:
**2.** Вызвать один раз на любой странице сайта сниппет `simpleFiltersUpdate`, который идет в комплекте.
70
+
71
+
#### Индексация при сохранении ресурса
72
+
Происходит автоматически посредством плагина `simpleFilters` (висит на событии `onDocFormSave`).
73
+
74
+
#### Индексация по расписанию
75
+
Можно использовать [CronManager](https://docs.modx.com/current/en/extras/cronmanager/index) или [Scheduler](http://ttps//docs.modx.pro/components/scheduler/).
76
+
Просто добавьте сниппет `simpleFiltersUpdate` в задание и настройте периодичность запуска.
77
+
78
+
#### Индексация после импорта
79
+
Если используете [Impex3](https://modstore.pro/packages/import-and-export/impex3), создайте плагин на событие `OnImpexAterAllImport` с вышеуказанным скриптом:
80
+
81
+
```php
82
+
switch ($modx->event->name){
83
+
case 'OnImpexAterAllImport':
84
+
$sf = $modx->getService('Simplefilters');
85
+
$sf->updateIndexAll();
86
+
break;
87
+
}
88
+
```
89
+
90
+
Если используете штатный импорт MiniShop3 из CSV, сделайте то же самое на `msOnAfterImport`:
91
+
```php
92
+
switch ($modx->event->name){
93
+
case 'msOnAfterImport':
94
+
$sf = $modx->getService('Simplefilters');
95
+
$sf->updateIndexAll();
96
+
break;
97
+
}
98
+
```
99
+
100
+
### Работа без индекса
101
+
Если ресурсов или полей немного или нет возможности обновлять индекс (по расписанию, после импорта и т. д), режим работы можно переключить на стандартные запросы к таблицам ресурсов, TV-парметров и т. д.
102
+
Для этого в вызове сниппета нужно указать ```&fromIndex=`0` ```
103
+
20
104
## Сниппет simpleFilters
21
105
22
106
Выводит список ресурсов, фильтры, подключает все необходимые скрипты и стили.
| sfOnBeforeCreateFilter | Вызывается при создании блока фильтра. Например, можно изменить название блока, значения для слайдера и т. д. |
182
286
| sfOnCheckResource | Вызывается при проверке ресурса на соответствие значению выбранного фильтра. Приходит id ресурса, название фильтра и значение. Чтобы ресурс добавился в выборку, должно возвращать `$data['result'] =true;` |
183
287
184
-
В комплекте идёт плагин **simpleFilters** с примерами.
288
+
Примеры обработки событий можно посмотреть в файле `core/components/simplefilters/docs/pluginExamples.md`.
0 commit comments