Застосування 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 | ім'я поля multiTV, яке використовується для фільтрації |
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 | - |