Как сделать фильтр по полю (множественный выбор)?

Для создания фильтра по полю с множественным выбором в MODX необходимо выполнить несколько шагов.

Шаг 1: Создание TV-поля
Сначала вам необходимо создать TV-поле, которое будет использоваться в качестве фильтра. Для этого зайдите в MODX Manager, выберите раздел "Ресурсы" и откройте ресурс, к которому вы хотите применить фильтр. В разделе "TV (Конфигурация значений)" нажмите "Создать новый шаблонный переменный".

Шаг 2: Настройка TV-поля
Настройте ваше TV-поле следующим образом:
- Задайте имя поля, например "multiselect_filter".
- Выберите тип поля "Listbox" (выпадающий список).
- В разделе "Values" введите значения, которые будут использоваться в качестве опций фильтра в формате "Значение==Описание". Например, "value1==Опция 1,value2==Опция 2,value3==Опция 3".

Шаг 3: Добавление TV-поля к шаблону
Перейдите в раздел "Шаблоны" и выберите шаблон, используемый для отображения страницы ресурса. В разделе "Шаблонные переменные" найдите ваше TV-поле и перетащите его на нужное место в шаблоне.

Шаг 4: Создание фильтра
Для создания фильтра вам понадобится использовать расширение MODX getResources или pdoTools.

4.1. Использование getResources:
Создайте новый ресурс, например "Filter", и добавьте туда чанк с кодом для отображения фильтра. В этом чанке вы можете использовать тег getResources со специальным фильтром для выбора ресурсов в соответствии с выбранными опциями.

Пример кода чанка "Filter" с использованием getResources:

[[!getResources?
    &parents=`[[*id]]`
    &includeTVs=`multiselect_filter`
    &processTVs=`1`
    &tvFilters=`multiselect_filter==value1||value2||value3`
]]

В этом примере мы используем тег getResources для выбора ресурсов, находящихся внутри текущего ресурса, и применяем фильтр по TV-полю "multiselect_filter", чтобы выбрать только ресурсы с опцией "value1", "value2" или "value3".

4.2. Использование pdoTools:
Альтернативный способ создания фильтра - использование pdoTools. Создайте новый ресурс "Filter", и используйте комментарии MODX в вашем чанке для определения параметров фильтрации.

Пример кода чанка "Filter" с использованием pdoTools:

[[pdoResources?
    &parents=`[[*id]]`
    &tpl=`tpl.filter`
    &where=`{"multiselect_filter:IN":"value1,value2,value3"}`
]]

В этом примере мы используем pdoResources для выбора ресурсов и применяем фильтр по TV-полю "multiselect_filter", чтобы выбрать только ресурсы с опцией "value1", "value2" или "value3". tpl.filter - это имя чанка, который будет использоваться для отображения фильтра.

Шаг 5: Отображение результата фильтрации
В вашем чанке, который используется для отображения ресурсов (например, "tpl.resources"), вы можете использовать условия для проверки выбранных опций фильтра и отображении результатов в соответствии с ними.

Пример кода чанка "tpl.resources":

[[!+multiselect_filter:is=`value1`:then=`Отображается контент для значения value1`]]
[[!+multiselect_filter:is=`value2`:then=`Отображается контент для значения value2`]]
[[!+multiselect_filter:is=`value3`:then=`Отображается контент для значения value3`]]

В этом примере мы используем условия для отображения блока контента в зависимости от выбранных опций фильтра.

Теперь у вас есть подробная инструкция о том, как создать фильтр по полю с множественным выбором в MODX с помощью TV-поля и расширения getResources или pdoTools.