ddGetDocumentField

Snippet
  • Версия: 2.6
  • Выпущено:
  • Метки: General
  • Использует:
    • PHP >= 5.4
    • MODXEvo >= 1.1
    • MODXEvo.library.ddTools >= 0.16.2
    • MODXEvo.snippet.ddTypograph >= 2.3 (if need to typography)
Скачать12 скачиваний

Описание

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

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

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

  • Внимание! Требуется PHP >= 5.4.
  • Внимание! Требуется MODXEvo >= 1.1.
  • Внимание! Требуется MODXEvo.library.ddTools >= 0.16.2.
  • Добавлена указания шаблона «tpl» без чанка, через префикс @CODE:.
  • Следующие параметры были переименованы (с обратной совместимостью):
    • «placeholders» → «tpl_placeholders».
    • «typography» → «typographyResult».
    • «screening» → «escapeResultForJS».
    • «urlencode» → «urlencodeResult».
  • Дополнительные данные, передаваемые в параметр «tpl_placeholders» должны быть в виде query string (старый формат поддерживается, но не рекомендуется к использвоанию).
  • Поля для проверки безопасности, передаваемые в параметр «securityFields» должны быть в виде query string (старый формат поддерживается, но не рекомендуется к использвоанию).
  • Прочие небольшие изменения.

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

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

Название Описание Допустимые значения Значение по умолчанию
id ID документа. {integer} текущий документ
field* Поля документа, которые надо получить, перечисленные через запятую. {string_commaSeparated}
field* Если необходимо изменить имена полей при выводе (названия плэйсхолдеров в чанке tpl или ключей объекта в JSON), указывайте их через :: после имени поля (например: pagetitle::title,content::text), см. примеры ниже. {string|string_separated}
alternateField Поля, которые надо отображать в случае, если значение основного поля пустое. {string_commaSeparated}
tpl Шаблон, по ко которому выводить. Передавать код напрямую без чанка можно начиная значение с @CODE:. {string_chunkName|string}
tpl_placeholders Дополнительные данные в виде query string которые будут переданы в шаблон tpl. Например, pladeholder1=value1&pagetitle=My awesome pagetitle!. {string_queryFormated}
glue Разделитель при выводе между значениями. {string}
outputFormat Формат, в котором возвращать результат. {''|'json'}
mode Режим работы. В этом случае id берётся из массива $_REQUEST. Используйте параметр securityFields! {''|'ajax'}
securityFields Поля и значения, по которым происходит проверка безопасности в виде query string. Например, template=15&published=1. {separated string}
typographyResult Нужно ли типографировать результат? {0|1} 0
escapeResultForJS Надо ли экранировать спец. символы в результате? {0|1} 0
urlencodeResult Надо URL-кодировать результат? {0|1} 0

Примеры

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

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

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

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

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

<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_item">
	[+content+]
	[[ddGetDocumentField?
		&id=`[+id+]`
		&field=`phone`
		&tpl=`test_item_phone`
		&tpl_placeholders=`fax=[+fax+]&someTitle=Call me!`
	]]
</div>

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

<p class="phone" title="[+someTitle+]">[+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": "Какое-то содержимое ресурса"
}