Сниппет для вывода данных, разделённых через определённые разделители. Удобно использовать для вывода значений полей документов.
Сниппет для вывода данных, разделённых через определённые разделители. Удобно использовать для вывода значений полей документов, сформированных виджетом mm_ddMultipleFields.
Автор: DivanDesign
Из пары параметров «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+]" />
Исходное значение поля:
Яблоки вкусные::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>
Пусть теги документа у нас хранятся в TV «tags» и к этой TV у нас применён виджет mm_widget_tags. Пользователь заполняет теги через запятую, при этом, может заполняться как с пробелами по краям, так и без них.
Значение TV «tags»:
Коты, Кошки,Собаки , Медведи ,Слоны
Вызов сниппета в шаблоне документа:
[[ddGetMultipleField? &inputString=`Manager, General` &rowDelimiter=`/\s*,\s*/` &rowGlue=`, ` &rowTpl=`tags_row` ]]
Код чанка «tags_row»:
<a href="dlbuildmenu/kratkoe-opisanie?tags=[+col0+]">[+col0+]</a>
Результат:
<a href="dlbuildmenu/kratkoe-opisanie?tags=Коты">Коты</a>, <a href="dlbuildmenu/kratkoe-opisanie?tags=Кошки">Кошки</a>, <a href="dlbuildmenu/kratkoe-opisanie?tags=Собаки">Собаки</a>, <a href="dlbuildmenu/kratkoe-opisanie?tags=Медведи">Медведи</a>, <a href="dlbuildmenu/kratkoe-opisanie?tags=Слоны">Слоны</a>
[[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>
Примеров здесь можно напридумывать великое множество.