Skip to content

Commit de6e087

Browse files
authored
Merge pull request #865 from rpadesign/patch-3
Update doc for simplefilters 1.2.0
2 parents 3617a02 + 33d93fb commit de6e087

File tree

1 file changed

+111
-7
lines changed

1 file changed

+111
-7
lines changed

docs/components/simplefilters.md

Lines changed: 111 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,99 @@ modstore: https://modstore.pro/packages/ecommerce/simplefilters
88

99
# simpleFilters
1010

11-
Пакет устанавливается стандартным образом из [репозитория](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+
- Системные события для тонкой настройки (тексты фильтров, значения, сортировка полей и т. д.).
1222

1323
## Системные настройки
1424

1525
| Параметр | Описание | Значение по умолчанию |
1626
|:----------|:----------|-----------------------|
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` |
1830
| sf_css_path | Путь к CSS-файлу относительно корня сайта | `{assets_url}components/simplefilters/css/web/default.min.css` |
1931

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` так:
57+
```
58+
ms_price,ms_vendor_id,ms_new,ms_color,mso_material,tv_instock,migx_chars_Высота:title|value
59+
```
60+
61+
Далее два варианта:
62+
**1.** Запустить через консоль следующий скрипт:
63+
```php
64+
<?php
65+
$sf = $modx->getService('Simplefilters');
66+
$sf->updateIndexAll();
67+
```
68+
69+
**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+
20104
## Сниппет simpleFilters
21105

22106
Выводит список ресурсов, фильтры, подключает все необходимые скрипты и стили.
@@ -29,6 +113,7 @@ modstore: https://modstore.pro/packages/ecommerce/simplefilters
29113
| **&resources** | Ресурсы для выборки. ID через запятую. | |
30114
| **&showUnpublished**| Вывод неопубликованных ресурсов | 0 |
31115
| **&templates** | Шаблоны ресурсов через запятую | |
116+
| **&fromIndex** | Выборка из индекса | 1 |
32117
| **&where** | Первоначальная выборка в JSON-формате | |
33118
| **&sortby** | Поле для сортировки | menuindex |
34119
| **&sortdir** | Направление сортировки | ASC |
@@ -38,8 +123,9 @@ modstore: https://modstore.pro/packages/ecommerce/simplefilters
38123
| **&msPrefix** | Префикс для полей товара miniShop3 | ms_ |
39124
| **&msoPrefix** | Префикс для опций товара miniShop3 | mso_ |
40125
| **&hideOne** | Скрывать фильтры с одним значением | 1 |
41-
| **&checkEmpty** | Просчитывать результат для каждого значения фильтра (усложняет выборку) | 0 |
126+
| **&checkEmpty** | Просчитывать результат для каждого значения фильтра, чтобы отключать неактивные | 0 |
42127
| **&filters** | Список фильтров в формате *поле1:тип_поля1,поле2:тип_поля2,поле3:тип_поля3* | |
128+
| **&aliases** | Псевдонимы фильтров для URL в формате *поле1==псевдоним1,поле2==псевдоним2,поле3==псевдоним3* | |
43129
| **&fseparator** | Разделитель значений фильтра в адресной строке | _ |
44130
| **&mode** | Режим работы: **and** — совпадение всех условий, **or** — совпадение хотя бы одного условия | or |
45131
| **Шаблонизация** | | |
@@ -77,7 +163,7 @@ modstore: https://modstore.pro/packages/ecommerce/simplefilters
77163
- Слайдер — **slider**
78164
- Радиокнопка — **radio**
79165

80-
Пример указания списка фильтров:
166+
Пример указания списка фильтров и псевдонимов:
81167

82168
```
83169
&filters=`
@@ -89,9 +175,17 @@ modstore: https://modstore.pro/packages/ecommerce/simplefilters
89175
ms_color,
90176
ms_tags:select
91177
`
178+
&aliases=`
179+
ms_vendor_id==brand,
180+
ms_price==price,
181+
tv_instock==instock,
182+
migx_chars_Высота==height,
183+
ms_color==color,
184+
ms_tags==tags
185+
`
92186
```
93-
94-
MIGX-поля указываются в формате:
187+
### MIGX-поля
188+
Поля этого типа указываются в формате:
95189

96190
```
97191
migx_[имя tv]_[название параметра]:[тип фильтра]:[поле названия]|[поле значения]
@@ -123,6 +217,10 @@ migx_chars_Высота:slider:title|value
123217
```
124218
migx_chars_Назначение:title|value
125219
```
220+
В настройке индексации `sf_index_fields` всегда **без указания типа фильтра**:
221+
```
222+
migx_chars_Назначение:title|value,migx_chars_Высота:title|value
223+
```
126224

127225
---
128226

@@ -150,6 +248,12 @@ migx_chars_Назначение:title|value
150248
&tplFilter_ms_tags=`чанк_для_блока`
151249
&tplFilterRow_ms_tags=`чанк_для_элемента`
152250
```
251+
Если для параметра указан псевдоним, то используется он:
252+
```
253+
$aliases=`ms_tags==tag`
254+
&tplFilter_tag=`чанк_для_блока`
255+
&tplFilterRow_tag=`чанк_для_элемента`
256+
```
153257

154258
Названия блоков фильтров задаются через лексиконы в формате **sf_filter_фильтр** (также можно менять в плагине).
155259

@@ -181,4 +285,4 @@ document.addEventListener('sfilters', (e) => {
181285
| sfOnBeforeCreateFilter | Вызывается при создании блока фильтра. Например, можно изменить название блока, значения для слайдера и т. д. |
182286
| sfOnCheckResource | Вызывается при проверке ресурса на соответствие значению выбранного фильтра. Приходит id ресурса, название фильтра и значение. Чтобы ресурс добавился в выборку, должно возвращать `$data['result'] = true;` |
183287
184-
В комплекте идёт плагин **simpleFilters** с примерами.
288+
Примеры обработки событий можно посмотреть в файле `core/components/simplefilters/docs/pluginExamples.md`.

0 commit comments

Comments
 (0)