ddGetDocumentField

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

Описание

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

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

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

  • Параметр «numericNames» удалён, используйте псевдонимы в параметре «field».
  • Следующие параметры были переименованы (старые имена пока поддерживаются, но не рекомендуются к использованию):
    • «typographing» в «typography».
    • «format» в «outputFormat».
  • Значения параметров «outputFormat» и «mode» больше не чувствительны к регистру.
  • Разбор плэйсхолдеров (переданных в параметр «placeholders») переделан на вызов метода «ddTools::explodeAssoc».
  • Прочие незначительные изменения.
  • Внимание! Сниппет использует библиотеку «modx.ddTools» 0.12!

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

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

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

Примеры

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

[[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::title,pub_date::date`
	&tpl=`test_chunk`
]]

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

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

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

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

Вернёт:

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