multiTV: Дополнительно
- Дополнения
- multiTV
- Дополнительно
multiTV: Дополнительно
PHx модификатор
Так как строка JSON в multiTV начинается с [[ и заканчивается ]] (Примечание 1), вы не можете проверить multiTV на пустоту, т.е. [*multittvname:ne=``:then=`not empty`*].
Но вы могли бы использовать в этом случае PHx модификаторы из папки phx-modifier. Переместите два файла из этой папки в assets/plugins/phx/modifiers.
Пример использования:
[+phx:multitvisempty=`tvname|docid`:then=`xxx`:else=`yyy`+]
[+phx:multitvisnotempty=`tvname|docid`:then=`xxx`:else=`yyy`+]
Если docid не установлен, по умолчанию используется текущий документ.
multiTvFilter экстендер Ditto
Для фильтрации строк, отображаемых Ditto воспользуйтесь экстендером multiTvFilter.
| Параметр | Описание |
|---|---|
| multiTvFilterBy | (обязательный параметр) имя переменной multiTV |
| multiTvFilterOptions | json-массив параметров фильтра |
Могут быть использованы следующие параметры фильтра
| Параметр | Описание |
|---|---|
| name | имя поля mulitTV, которое используется для фильтрации |
| type | тип содержимого поля multiTV (возможные варианты: date, text) |
| value | Значение поля multiTV для фильтрации |
| mode | режим фильтрации содержимого поля multiTV |
| conjunction | Логическая связь с предыдущим фильтром (AND/OR) |
Следующие режимы могут быть использованы для поля типа text:
| Тип сравнения | Описание |
|---|---|
| contains | фильтровать, если хотя бо одно поле содержит текст критерия |
| allcontains | фильтровать, если все поля содержат текст критерия |
| containsnot | фильтровать, если одно из полей не содержит текст критерия |
| allcontainsnot | фильтровать, если все поля не содержат текст критерия |
| is | фильтровать если одно поле соответствует критерию |
| allis | фильтровать если все поля соответствуют критерию |
| isnot | фильтровать, если одно из полей не соответствует критерию |
| allisnot | фильтровать, если все поля не соответствуют критерию |
Следующие режимы могут быть использованы для поля типа date:
| Тип сравнения | Описание |
|---|---|
| before | фильтровать, если одно поле меньше критерия |
| beforeall | фильтровать, если все поля меньше критерия |
| equal | фильтровать, если одно поле равно критерию |
| equalall | фильтровать, если все поля равны критерию |
| after | фильтровать, если одно поле больше критерия |
| afterall | фильтровать, если все поля больше критерия |
Примеры
Показать все дочерние документы контейнеров 3, 4 и 5, у которых переменная шаблона multiTV event в столбце title не содержит Important
[[Ditto?
&parents=`3,4,5`
&display=`all`
&tpl=`...`
&extenders=`@FILE assets/tvs/multitv/dittoExtender/multitvfilter.extender.inc.php`
&multiTvFilterBy=`event`
&multiTvFilterOptions=`[{"name":"title","type":"text","value":"Important","mode":"contains"}]`
]]
Если вы хотите фильтровать по нескольким значениям multiTV, добавьте еще один массив в multiTvFilterOptions. В этом примере отобразятся все дочерние документы контейнеров 3, 4, и 5 у которых переменная шаблона multiTV event в столбце title не содержит Important и все столбцы location соответствуют Outdoor.
[[Ditto?
&parents=`3,4,5`
&display=`all`
&tpl=`...`
&extenders=`@FILE assets/tvs/multitv/dittoExtender/multitvfilter.extender.inc.php`
&multiTvFilterBy=`event,event`
&multiTvFilterOptions=`[{"name":"title","type":"text","value":"Important","mode":"contains"},{"name":"location","type":"text","value":"Outdoor","mode":"allisnot","conjunction":"OR"}]`
]]
Обновление на новый формат данных
Версия 1.4.11 multiTV использует новый формат данных (имена столбцов сохраняются в виде ключ - значение). Переменная и сниппет поддерживают старый и новый форматы, так что вам не придется обновлять multiTVs. Но вам это потребуется, если вы захотите добавить/удалить столбцы в multiTVs. Вызовите сниппет в документе MODX следующим образом:
[!updateTV? &tvNames=`yourMultiTVname1,yourMultiTVname2`!]
Параметры
| Параметр | Описание | Значение по умолчанию |
|---|---|---|
| tvNames | (обязательно) разделенный запятыми список имен переменных, которые содержат данные multiTV | - |