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').

    Доступні плейсхолдери:

    • [+rowNumber+] – номер рядка, що починається з 1;
    • [+rowNumber.zeroBased+] – номер рядка, що починається з 0;
    • [+total+] – загальна кількість рядків;
    • [+resultTotal+] – кількість повертаючих рядків;
    • [+col0+], [+col1+], … – значення відповідних колонок.

    Передавати код безпосередньо без чанка можна починаючи значення з «@CODE:».

    {string: chunkName|string}
    colTpl Список шаблонів для виведення колонок, через кому (параметр «outputFormat» повинен бути == 'html'). Якщо шаблонів менше, ніж колонок, для всіх відсутніх виставляється останній вказаний шаблон. Значення 'null' - без шаблону.

    Доступні плейсхолдери:

    • [+val+] – значення;
    • [+rowNumber+] – номер рядка, що починається з 1;
    • [+rowNumber.zeroBased+] – номер рядка, що починається з 0.

    Передавати код безпосередньо без чанка можна починаючи значення з «@CODE:».

    {comma separated string: chunkName|string; 'null'}
    outerTpl Шаблон зовнішньої обгортки (при «outputFormat» != 'array').

    Доступні плейсхолдери:

    • [+result+] – результат сніппета;
    • [+total+] – загальна кількість рядків;
    • [+resultTotal+] – кількість повертаючих рядків;
    • [+rowY.colX+] – значення (де «Y» - номер рядка, «X» - номер колонки).

    Передавати код безпосередньо без чанка можна починаючи значення з «@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+]" />
    

    Отримання і виведення даних з поля (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="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>
    

    Передача додаткових даних через параметр «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>

    Прикладів тут можна напридумувати безліч.