Дополнительно

    multiTV: Дополнительно

    Применения multiTV в Ditto multiTvFilter экстендер Ditto PHx модификаторы.

    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 -