Skip to content

Commit 2042f36

Browse files
authored
Merge pull request #854 from rpadesign/patch-1
Create simplefilters.md
2 parents d7f94d6 + cbfd27c commit 2042f36

File tree

1 file changed

+184
-0
lines changed

1 file changed

+184
-0
lines changed

docs/components/simplefilters.md

Lines changed: 184 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,184 @@
1+
---
2+
title: simpleFilters
3+
description: Простая фильтрация ресурсов для MODX3.
4+
logo: https://modstore.pro/assets/extras/simplefilters/logo-md.png
5+
author: Romanov Pavel
6+
modstore: https://modstore.pro/packages/ecommerce/simplefilters
7+
---
8+
9+
# simpleFilters
10+
11+
Пакет устанавливается стандартным образом из [репозитория](https://modstore.pro/packages/ecommerce/simplefilters) через установщик MODX3.
12+
13+
## Системные настройки
14+
15+
| Параметр | Описание | Значение по умолчанию |
16+
|:----------|:----------|-----------------------|
17+
| sf_css_path | Путь к JS-файлу относительно корня сайта | `{assets_url}components/simplefilters/js/web/default.min.js` |
18+
| sf_css_path | Путь к CSS-файлу относительно корня сайта | `{assets_url}components/simplefilters/css/web/default.min.css` |
19+
20+
## Сниппет simpleFilters
21+
22+
Выводит список ресурсов, фильтры, подключает все необходимые скрипты и стили.
23+
24+
#### Параметры
25+
26+
| Параметр | Описание | Значение по умолчанию |
27+
|:----------|:----------|-----------------------|
28+
| **&parents** | Родители для выборки. ID через запятую. | Текущий ресурс |
29+
| **&resources** | Ресурсы для выборки. ID через запятую. | |
30+
| **&showUnpublished**| Вывод неопубликованных ресурсов | 0 |
31+
| **&templates** | Шаблоны ресурсов через запятую | |
32+
| **&where** | Первоначальная выборка в JSON-формате | |
33+
| **&sortby** | Поле для сортировки | menuindex |
34+
| **&sortdir** | Направление сортировки | ASC |
35+
| **&limit** | Количество на страницу | 10 |
36+
| **&includeTVs** | TV-поля через запятую для включения в вывод | |
37+
| **&tvPrefix** | Префикс для TV-полей в чанке ресурса | tv_ |
38+
| **&msPrefix** | Префикс для полей товара miniShop3 | ms_ |
39+
| **&msoPrefix** | Префикс для опций товара miniShop3 | mso_ |
40+
| **&hideOne** | Скрывать фильтры с одним значением | 1 |
41+
| **&checkEmpty** | Просчитывать результат для каждого значения фильтра (усложняет выборку) | 0 |
42+
| **&filters** | Список фильтров в формате *поле1:тип_поля1,поле2:тип_поля2,поле3:тип_поля3* | |
43+
| **&fseparator** | Разделитель значений фильтра в адресной строке | _ |
44+
| **&mode** | Режим работы: **and** — совпадение всех условий, **or** — совпадение хотя бы одного условия | or |
45+
| **Шаблонизация** | | |
46+
| **&tpl** | Чанк вывода ресурса | |
47+
| **&tplWrapper** | Чанк-обёртка всего вывода | sf_wrapper |
48+
| **&tplFilter** | Чанк блока фильтра типа чекбокс или радиокнопка | sf_filter |
49+
| **&tplFilterRow** | Чанк строки фильтра типа чекбокс | sf_filter_row |
50+
| **&tplFilterRadioRow** | Чанк строки фильтра типа радиокнопка | sf_filter_radio_row |
51+
| **&tplFilterSelect** | Чанк блока фильтра типа селект | sf_filter_select |
52+
| **&tplFilterSelectRow** | Чанк опции фильтра типа селект | sf_filter_option_row |
53+
| **&tplFilterSlider** | Чанк блока фильтра типа слайдер | sf_filter_slider |
54+
| **&tplSelected** | Чанк оформления блока выбранного фильтра | sf_selected_filter |
55+
| **&tplSelectedRow** | Чанк оформления строки выбранного фильтра | sf_selected_row |
56+
| **Пагинация** | | |
57+
| **&tplPaginationWrapper** | Чанк-обёртка блока пагинации | sf_pagination |
58+
| **&tplPagination** | Чанк вывода ссылки на страницу | sf_page |
59+
| **&tplPaginationFirst** | Чанк вывода ссылки на первую страницу | sf_page_first |
60+
| **&tplPaginationLast** | Чанк вывода ссылки на последнюю страницу | sf_page_last |
61+
| **&tplMoreButton** | Чанк вывода кнопки «Загрузить ещё» | sf_morebutton |
62+
63+
## Настройка фильтров
64+
65+
В параметре **&filters** используйте следующие префиксы:
66+
67+
- Поле ресурса — **без префикса**
68+
- TV-параметр — **tv_**
69+
- MIGX-поле — **migx_**
70+
- Поле товара MiniShop3 — **ms_**
71+
- Опция товара MiniShop3 — **mso_**
72+
73+
Для типов:
74+
75+
- Чекбокс — **checkbox** или оставить пустым
76+
- Выпадающий список — **select**
77+
- Слайдер — **slider**
78+
- Радиокнопка — **radio**
79+
80+
Пример указания списка фильтров:
81+
82+
```
83+
&filters=`
84+
parent:select,
85+
ms_vendor_id:select,
86+
ms_price:slider,
87+
tv_instock:slider,
88+
migx_chars_Высота:slider:title|value,
89+
ms_color,
90+
ms_tags:select
91+
`
92+
```
93+
94+
MIGX-поля указываются в формате:
95+
96+
```
97+
migx_[имя tv]_[название параметра]:[тип фильтра]:[поле названия]|[поле значения]
98+
```
99+
100+
Допустим есть MIGX-TV **chars** с такой конфигурацией:
101+
102+
```json
103+
[{"fields":
104+
[
105+
{"field":"title", "caption":"Параметр"},
106+
{"field":"value", "caption":"Значение"}
107+
]
108+
}]
109+
```
110+
111+
А у товаров значения указываются следующим образом:
112+
113+
![MIGX значения](https://file.modx.pro/files/c/3/0/c304369a3e56435a47bf92102f858864.jpg)
114+
115+
Чтобы создать фильтр-слайдер для параметра «Высота» нужно прописать:
116+
117+
```
118+
migx_chars_Высота:slider:title|value
119+
```
120+
121+
Фильтр для параметра «Назначение» в виде чекбоксов так:
122+
123+
```
124+
migx_chars_Назначение:title|value
125+
```
126+
127+
---
128+
129+
## Параметр &where
130+
131+
Поддерживает один параметр/значение. Работает только с таблицами ресурса и продукта MiniShop3 (поля указываются без префиксов, как в базе).
132+
133+
| Описание | Пример |
134+
|----------|--------|
135+
| Вывод новинок | `'where' => '{"new":"1"}'` |
136+
| Вывод товаров с ценой больше 2000 | `'where' => '{"price:>":"2000"}'` |
137+
| Вывод ресурсов со словом "скидка" в longtitle | `'where' => '{"longtitle:like":"скидка"}'` |
138+
139+
## Шаблонизация
140+
141+
В чанках по умолчанию используется Fenom (требуется наличие [pdoTools](https://modstore.pro/packages/utilities/pdotools)), но поддерживается и стандартный синтаксис.
142+
143+
Компонент поддерживает кастомные чанки для разных фильтров.
144+
145+
Для этого нужно указать параметры в виде **&tplFilter_параметр** и **&tplFilterRow_параметр**.
146+
147+
Например, если требуется для фильтра по тегам (**ms_tags**) какое-то своё оформление, создайте соответствующие чанки и укажите в вызове:
148+
149+
```
150+
&tplFilter_ms_tags=`чанк_для_блока`
151+
&tplFilterRow_ms_tags=`чанк_для_элемента`
152+
```
153+
154+
Названия блоков фильтров задаются через лексиконы в формате **sf_filter_фильтр** (также можно менять в плагине).
155+
156+
## JavaScript
157+
158+
Для отправки формы можно использовать метод `sf.submit`:
159+
160+
```js
161+
sf.submit();
162+
```
163+
164+
После обновления данных срабатывает событие `sfilters`:
165+
166+
```js
167+
document.addEventListener('sfilters', (e) => {
168+
// console.log(e);
169+
};
170+
```
171+
172+
## Системные события
173+
174+
Все события принимают массив `$data`.
175+
176+
| Событие | Описание |
177+
|---------|----------|
178+
| sfOnGetIds | Вызывается после первоначального сбора ID выводимых ресурсов. Можно добавить ресурс, прописав его ID или полностью переписать набор. |
179+
| sfOnGetFilterValues | Вызывается после создания значений фильтра. Принимает массив со значениями (например, можно отсортировать по-своему), названием и типом фильтра. |
180+
| sfOnBeforeCreateFilterRow | Вызывается при создании строки (элемента фильтра). Можно заменить названия, значения и т. д. |
181+
| sfOnBeforeCreateFilter | Вызывается при создании блока фильтра. Например, можно изменить название блока, значения для слайдера и т. д. |
182+
| sfOnCheckResource | Вызывается при проверке ресурса на соответствие значению выбранного фильтра. Приходит id ресурса, название фильтра и значение. Чтобы ресурс добавился в выборку, должно возвращать `$data['result'] = true;` |
183+
184+
В комплекте идёт плагин **simpleFilters** с примерами.

0 commit comments

Comments
 (0)