Сніпет для виведення даних, розділених через певні роздільники. Зручно використовувати для виведення значень полів документів.
Сніпет для виведення даних, розділених через певні роздільники. Зручно використовувати для виведення значень полів документів, сформованих віджетом 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» і «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>
Прикладів тут можна напридумувати безліч.