ddGetDocumentField

Snippet
  • Версия: 2.3
  • Выпущено:
  • Метки: General
  • Использует:
Скачать 31 скачивание

Описание

Сниппет обеспечивает получение необходимых полей документа (и TV в том числе) по его id. Также он умеет:

  • Выводить альтернативное поле, если основное не заполнено;
  • Типографировать значение перед выводом (используется сниппет ddTypograph);
  • Экранировать спец. символы;
  • URL-кодировать строку перед выводом;
  • Выводить поля по шаблону (чанку);
  • Выводить поля через разделитель;
  • Выводить в формате JSON;
  • Работать с AJAX (брать id из массива $_REQUEST ($_GET или $_POST)).
  • Возвращать имена полей по порядковому номеру.
  • Возвращать вместо исходных имён полей необходимые псевдонимы.

Список изменений

  • Используется библиотека modx.ddTools версии 0.4.1.
  • В параметр «field» теперь можно передавать «url», сниппет автоматически сформирует url в соответсвии с id (если конечно TV с таким именем не существует).
  • Добавлена возможность указывать псевдонимы для вывода полей в параметре «field». Формат: 'field::alias,…', где «field» — поле, «alias» — то, под каким именем его необходимо выводить (например: 'pagetitle::title,content::text').

Документация

Описание параметров

Название Описание Допустимые значения Значение по умолчанию
id ID документа. {integer} текущий документ
field * Поля документа, которые надо получить, перечисленные через запятую. Если необходимо изменить имена полей при выводе (названия плэйсхолдеров в чанке «tpl» или ключей объекта в JSON), указывайте их через '::' после имени поля (например: 'pagetitle::title,content::text'), см. примеры ниже. {comma separated string; separated string}
alternateField Поля, которые надо отображать в случае, если значение основного поля пустое. {comma separated string}
numericNames Выводить имена полей (плэйсхолдеров в чанке «tpl» или ключей объекта в JSON) в качестве порядкового номера (например: 'field0', 'field1' и т.д.). 0; 1 0
published Опубликован ли документ. 0; 1 1
typographing Нужно ли типографировать? 0; 1 0
screening Надо ли экранировать спец. символы? 0; 1 0
urlencode Надо URL-кодировать строку? 0; 1 0
tpl Шаблон, по ко которому выводить. {string: chunkName}
glue Разделитель при выводе между значениями. {string}
format Формат, в котором возвращать результат. ''; 'JSON'
placeholders Дополнительные данные, которые необходимо передать. Формат: строка, разделённая '::' между парой ключ-значение и '||' между парами. {separated string}
mode Режим работы. В этом случае id берётся из массива $_REQUEST. Используйте параметр securityFields! ''; 'ajax'
securityFields Поля и значения, по которым происходит проверка безопасности. Формат: поле:значение|поле:значение. {separated string}

Примеры

Получение заголовка текущего документа

[[ddGetDocumentField? &field=`pagetitle`]]

Получение аннотации документа с id 7 и вывод через чанк

[[ddGetDocumentField? &id=`7` &field=`introtext` &tpl=`test_chunk`]]

Код чанка «test_chunk»:

<div class="test">[+introtext+]</div>

Получение расширенного заголовка документа, если есть, или просто заголовка

<title>[[ddGetDocumentField? &field=`longtitle` &alternateField=`pagetitle`]]</title>

Получение нескольких телефонов (TV) и вывод через запятую

[[ddGetDocumentField? &id=`7` &field=`phone1,phone2` &glue=`, `]]

Передача дополнительных параметров при выводе через чанк

Например, собираем что-то при помощи Ditto, в чанке «tpl» Ditto нам нужно получить номер телефона если он заполнен и красиво вывести с ним и факс, или ничего не делать. Код чанка:

<div class="test_row">
[+content+]
[[ddGetDocumentField? &id=`[+id+]` &field=`phone` &tpl=`test_row_phone` &placeholders=`fax::[+fax+]`]]
</div>

Код чанка «test_row_phone»:

<p class="phone">[+phone+], [+fax+]</p>

Вывод полей в чанке «tpl» по порядковому номеру

[[ddGetDocumentField? &field=`pagetitle,longtitle` &tpl=`test_chunk`]]

Код чанка «test_chunk»:

<p>[+field0+], [+field1+]</p>

Использование псевдонимов полей при выводе в чанке «tpl»

[[ddGetDocumentField? &field=`pagetitle::title,pub_date::date` &tpl=`test_chunk`]]

Код чанка «test_chunk»:

<p>Примеры, [+date+]</p>

Использование псевдонимов полей при выводе в JSON

[[ddGetDocumentField? &field=`pagetitle::title,introtext::text,content` &format=`JSON`]]

Вернёт:

{"title": "Заголовок документа", "text": "Какая-то аннотация", "content": "Какое-то содержимое ресурса"}