Применения multiTV в Ditto multiTvFilter экстендер Ditto 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
не установлен, по умолчанию используется текущий документ.
Для фильтрации строк, отображаемых 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 | - |