## Фильтр записей для NG CMS

Плагин позволяет установить на сайте фильтр записей по категориям и дополнительным полям xfields с поддержкой полнотекстового поиска. Плагин поддерживает дополнительные поля типа *input* и *select*. Для полей типа input создается выборка (доп. SQL-запрос) всех возможных значений и отображается в виде выпадающего списка. Данный запрос можно кешировать, установив время в настройках плагина.

### Подключение

1. Скачайте, распакуйте в папку *\engine\plugins\x_filter* вашей cms.
2. Перед включением:

- Установите и включите плагин *xfields*, создайте дополнительные поля.
- При создании доп. поля выбирайте Режим сохранения данных: **Персональное поле в БД**.

3. Для отображения формы фильтра на сайте разместите переменную `{{ x_filter_form }}` в шаблоне **main.tpl**.
4. Для отображения формы поиска на сайте разместите переменную `{{ x_filter_search_form }}` в шаблоне **news.table.tpl**.

### Доступные переменные в шаблонах

#### Шаблон плагина `x_filter\filter_form.tpl`:

- `{{ form_action }}` ссылка для для атрибута action формы фильтра
- `{{ plugin_link }}` ссылка на главную страницу плагина
- `{{ catid }}` id текущей категории
- `{{ search }}` поисковое слово, если было заполнено пользователем
- `{{ catlist }}` выпадающий список категорий сайта
- `{{ order }}` порядок сортировки результатов фильтрации
- `{{ x_имя_доп_поля }}` выводит выпадающий список существующих значений данного поля

#### Шаблон плагина `x_filter\search_form.tpl`:

- `{{ form_action }}` ссылка для для атрибута action формы фильтра
- `{{ plugin_link }}` ссылка на главную страницу плагина
- `{{ catid }}` id текущей категории
- `{{ search }}` поисковое слово, если было заполнено пользователем
- `{{ count }}` количество отфильтрованных записей

#### Шаблон сайта `news.table.tpl`:

- `{{ form_action }}` ссылка для для атрибута action формы фильтра
- `{{ plugin_link }}` ссылка на главную страницу плагина
- `{{ catid }}` id текущей категории
- `{{ search }}` поисковое слово, если было заполнено пользователем
- `{{ catlist }}` выпадающий список категорий сайта
- `{{ count }}` количество отфильтрованных записей
- `{{ data }}` массив отфильтрованных записей
- `{{ pages }}` информация о страницах:
   - `{{ pages.current }}` номер текущей страницы
   - `{{ pages.total }}` количество страниц
   - `{{ pages.output }}` html код постраничной навигации; тоже что и `{{pagination}}`
- `{{ pagination }}` html код постраничной навигации
- `{{ x_filter_search_form }}` форма поиска

### Дополнительно можно настроить:

- категории, которые следует скрывать из выпадающего списка категорий, формируемом переменной `{{ catlist }}`
- возможность выбора из всех категорий (в списке категорий будет установленное по умолчанию значение "- все -")
- порядок вывода новостей и их количество на странице
- расположение шаблона (шаблон сайта / шаблон плагина)
- опциональное встраивание на страницу файла таблицы стилей из шаблона
- опциональное встраивание на страницу файла javascript из шаблона
- возможность задания страницам фильтра канонической ссылки
- возможность запрета индексации страниц фильтра поисковыми роботами

### Лицензия

`x_filter` - программное обеспечение с открытым исходным кодом, распространяющееся по лицензии [MIT](https://choosealicense.com/licenses/mit/).
