ddGetMultipleField Сниппет для вывода данных
- Дополнения
- ddGetMultipleField
ddGetMultipleField Сниппет для вывода данных
Сниппет для вывода данных, разделённых через определённые разделители. Удобно использовать для вывода значений полей документов, сформированных виджетом mm_ddMultipleFields.
Автор: DivanDesign
Возможности:
- Получение необходимого поля документа (и TV) по id. Параметры «inputString_docField» и «inputString_docId».
- Вывод необходимого количества значений по номерам строк и и значениям. Параметры «startRow», «totalRows» и «filter».
- Вывод необходимых значений по номерам колонок. Параметр «columns».
- Сортировка строк по значениям колонок перед выводом ('ASC', 'DESC', 'RAND', 'REVERSE'), в том числе множественная сортировка. Параметры «sortDir» и «sortBy».
- Вывод значений через разделители строк и колонок. Параметры «rowGlue» и «colGlue».
- Удаление пустых значений колонок и строк перед выводом. Параметры «removeEmptyRows» и «removeEmptyCols».
- Типографирование значений перед выводом (используется сниппет ddTypograph). Параметр «typography».
- URL-кодирование результата перед выводом. Параметр «urlencode».
- Вывод результата в JSON. Параметр «outputFormat».
- Вывод значений по шаблонам (чанкам) строк и колонок (в шаблоне строк также доступен плэйсхолдер [+rowNumber+] с номером строки). Параметры «rowTpl» и «colTpl».
- Вывод результата выполнения в чанк «outerTpl» с передачей дополнительных данных через параметр «placeholders».
Документация
Из пары параметров «inputString»/«inputString_docField» необходимо передавать лишь один.
Описание параметров
Название | Описание | Допустимые значения | Значение по умолчанию |
---|---|---|---|
inputString* | Исходная строка, содержащая значение с разделителями. | {separated string} | – |
inputString_docField | Имя поля документа / TV, содержащего значение. В этом случае параметр «inputString» игнорируется, значение получается из поля документа. | {string} | – |
inputString_docId | ID документа, значение поля которого нужно получить. Если id не задан, берётся id текущего документа. | {integer} | – |
rowDelimiter | Разделитель между строками в исходной строке. | {string; regexp} | '||' |
colDelimiter | Разделитель между колонками в исходной строке. | {string; regexp} | '::' |
startRow | Номер строки, начиная с которой необходимо возвращать (строки нумеруются с 0). | {integer} | 0 |
totalRows | Количество возвращаемых строк. При значении == 'all' будут возвращены все имеющиеся строки. | {integer; 'all'} | 'all' |
columns | Номера колонк через запятую, которые нужно вернуть (колонки нумеруются с 0). При значении == 'all' будут возвращены все колонки. | {comma separated string; 'all'} | 'all' |
filter | Фильтр по значениям колонок. Например, при '0::a||0::b||1::1' выведутся только строки, в которых значение колонки 0 равно 'a' или 'b' и значение колонки 1 равно '1'. | {separated string} | – |
removeEmptyRows | Удалять пустые строки? | {0; 1} | 1 |
removeEmptyCols | Удалять пустые колонки? | {0; 1} | 1 |
sortBy | Номер колонки (нумеруются с ноля), по которой необходимо сортировать. Для множественной сортировки параметры указываются через запятую (например: '0,1'). | {comma separated string} | 0 |
sortDir | Направление сортировки строк. При значении == 'REVERSE' строки будут возвращены в обратном порядке. | {'ASC'; 'DESC'; 'RAND'; 'REVERSE'; ''} | – |
typography | Номера колонок через запятую, значения которых нужно типографировать (колонки нумеруются с 0). Если не задано, ничего не типографируется. | {comma separated string} | – |
outputFormat | Формат, в котором возвращать результат. | {'html'; 'JSON'; 'array'; 'htmlarray'} | 'html' |
rowGlue | Разделитель (объединитель) между строками при выводе. Может использоваться совместно с шаблоном «rowTpl». | {string} | – |
colGlue | Разделитель (объединитель) между колонками при выводе. Может использоваться совместно с шаблоном «colTpl» (но не «rowTpl», по понятным причинам). | {string} | – |
rowTpl | Шаблон для вывода строк (параметр «outputFormat» должен быть == 'html').
Доступные плэйсхолдеры:
Передавать код напрямую без чанка можно начиная значение с «@CODE:». |
{string: chunkName|string} | – |
colTpl | Список шаблонов для вывода колонок, через запятую (параметр «outputFormat» должен быть == 'html'). Если шаблонов меньше, чем колонок, для всех недостающих выставляется последний указанный шаблон. Значение 'null' – без шаблона.
Доступные плэйсхолдеры:
Передавать код напрямую без чанка можно начиная значение с «@CODE:». |
{comma separated string: chunkName|string; 'null'} | – |
outerTpl | Шаблон внешней обёртки (при «outputFormat» != 'array').
Доступные плэйсхолдеры:
Передавать код напрямую без чанка можно начиная значение с «@CODE:». |
{string: chunkName|string} | – |
placeholders | Дополнительные данные в виде query string которые будут переданы в шаблоны «outerTpl», «rowTpl» and «colTpl». Например, «pladeholder1=value1&pagetitle=My awesome pagetitle!». | {query string} | – |
urlencode | Надо URL-кодировать результирующую строку (при «outputFormat» != 'array')? Строка кодируется согласно RFC 3986. | {0; 1} | 0 |
totalRowsToPlaceholder | Имя внешнего плэйсхолдера, в который нужно вывести общее количество строк. Если параметр не задан – не выводится. | {string} | – |
resultToPlaceholder | Имя внешнего плэйсхолдера, в который нужно сохранить результат работы сниппета вместо обычного вывода. Если параметр не задан – сниппет просто возвращает реузльтат. | {string} | – |
Примеры
Вывод изображений с описаниями
Исходная строка (пусть находится в TV документа «images»):
assets/images/some_img1.jpg::Изображение 1||assets/images/some_img2.jpg::Изображение 2
Вызов сниппета в шаблоне документа:
[[ddGetMultipleField? &inputString=`` &rowTpl=`images_item` ]]
Код чанка «images_item»:
[+col1+]: <img src="[+col0+]" alt="[+col1+]" />
Получение и вывод данных из поля (TV) «prices» документа с id = 25 в виде таблицы, если что-то есть и ничего, если нету
Исходное значение поля:
Яблоки вкусные::100::кг||Гвозди обыкновенные::5 000::центнер||Коты::865::шт
Вызов сниппета (где угодно):
[[ddGetMultipleField? &inputString_docField=`prices` &inputString_docId=`25` &outerTpl=`prices` &rowTpl=`prices_item` ]]
Код чанка «prices_item»:
<tr> <td>[+rowNumber+]</td> <td>[+col0+]</td> <td>[+col1+] руб./[+col2+]</td> </tr>
Код чанка «prices»:
<h1>Табличка цен</h1> <table> [+result+] </table>
Вывод тегов документа через запятую с использованием регулярного выражения в «rowDelimiter»
Пусть теги документа у нас хранятся в TV «tags» и к этой TV у нас применён виджет mm_widget_tags. Пользователь заполняет теги через запятую, при этом, может заполняться как с пробелами по краям, так и без них.
Значение TV «tags»:
Коты, Кошки,Собаки , Медведи ,Слоны
Вызов сниппета в шаблоне документа:
[[ddGetMultipleField? &inputString=`Manager, General` &rowDelimiter=`/\s*,\s*/` &rowGlue=`, ` &rowTpl=`tags_row` ]]
Код чанка «tags_row»:
<a href="uslugi/?tags=[+col0+]">[+col0+]</a>
Результат:
<a href="uslugi/?tags=Коты">Коты</a>, <a href="uslugi/?tags=Кошки">Кошки</a>, <a href="uslugi/?tags=Собаки">Собаки</a>, <a href="uslugi/?tags=Медведи">Медведи</a>, <a href="uslugi/?tags=Слоны">Слоны</a>
Передача дополнительных данных через параметр «placeholders»
[[ddGetMultipleField? &inputString=`Серый::8 кг::любит мясо||Рыжий::6 кг::вегетарианец` &outerTpl=`cats` &rowTpl=`cats_item` &colTpl=`cats_item_color,null,null` &placeholders=`kind=коты` &price=`не продаётся.` &colorTitle=`Шерсть густая, хорошая` ]]
Код чанка «cats» (вместо «[+kind+]» подставятся «коты»):
<h1>Наши любимые [+kind+], [+resultTotal+] штук.</h1>[+result+]
Код чанка «cats_item» (вместо «[+price+]» подставится «не продаётся.»):
[+rowNumber+]. [+col0+], весит [+col1+], [+col2+] – <i>[+price+]</i><br />
Код чанка «cats_item_color» (вместо «[+colorTitle+]» подставится «Шерсть густая, хорошая»):
<span title="[+colorTitle+]">[+val+]</span>
Примеров здесь можно напридумывать великое множество.