Доповнення плагіну ManagerManager для налаштування зовнішнього вигляду ресурсу в бекенд сайту.
Модуль для зручного редагування файлу конфігурації плагіну ManagerManager.
Можливості:
Установка
Вміст файлу module.php повинен бути скопійований в поле «Код модулів» в меню створення нового модуля. Решта файлів повинні знаходитись в assets/modules/ddmmeditor/... (в архіві вже створена потрібна структура папок). Модуль змінює файл assets/plugins/managermanager/mm_rules.inc.php плагіна ManagerManager.
Увага! Щоб ManagerManager використовував правила, створення модулів, параметр «Configuration Chunk» в конфігурації плагіну (вкладка «Конфігурація») повинен бути порожнім.
Сніпет для виводу даних, розділених через визначені роздільники. Зручно використовувати для виклику значень полів документів, сформованих віджетом mm_ddMultipleFields. Можливості:
Увага! З пар параметрів «string»/«docField» необхідно передавати лише один.
Назва | Опис | Допустимі значення | Значення за замовчуванням |
---|---|---|---|
string * | Вихідна стрічка рядка, яка має значення з розділювачами. | {separated string} | – |
docField | Ім'я поля документу / TV, що містить значення.В такому випадку параметр «string» ігнорується, значення виходить з поля документу. | {string} | – |
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), [+total+] (загальна кількість рядків), [+resultTotal+] (кількість рядків, що повертаються), [+col0+], [+col1+], … (значення відповідних колонок). | {string: chunkName} | – |
colTpl | Список шаблонів для виводу колонок, через кому (параметр «outputFormat» повинен бути == 'html'). Якщо шаблонів менше, ніж колонок, для всіх відсутніх виставляється останній вказаний шаблон. Значення 'null' – без шаблону. Доступний плейсхолдер: [+val+]. | {comma separated string: chunkName; 'null'} | – |
outerTpl | Шаблон зовнішньої обгортки (при «outputFormat» != 'array'). Доступні плейсхолдери: [+result+], [+total+] (загальна кількість рядків), [+resultTotal+] (кількість рядків, що повертаються), [+rowY.colX+] (де «Y» – номер рядку, «X» – номер колонки). | {string: chunkName} | – |
placeholders | Додаткові дані, які необхідно передати в шаблон «outerTpl». Формат: рядок, розділений '::' між парою ключ-значення і '||' між парами. | {separated 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? &string=`[*images*]` &rowTpl=`imgRow` ]]
Код чанка «imgRow»:
[+col1+]: <img src="[+col0+]" alt="[+col1+]" />
Отримання і вивід даних з поля (TV) «prices» документа з id = 25 в вигляді таблиці, якщо щось є, якщо нічого немає
Вихідні значення поля:
Яблука смачні::100::кг||Цвяхи звичайні::5 000::центнер||Коти::865::шт
Виклик сніпета (де зручно):
[[ddGetMultipleField? &docField=`prices` &docId=`25` &rowTpl=`pricesRow` &outerTpl=`pricesWrap` ]]
Код чанка «pricesRow»:
<tr> <td>[+rowNumber+]</td> <td>[+col0+]</td> <td>[+col1+] руб./[+val2+]</td> </tr>
Код чанка «pricesWrap»:
<h1>Таблиця цін </h1> <table> [+result+] </table>
Вивід тегів документа через кому з використовуванням регулярного вираження в «rowDelimiter»
Шлях тегів документу у нас зберігаються в TV «tags» і до цього TV у нас заданий віджет mm_widget_tags. Користувач заповняє теги через кому, при цьому, може заповнюватися як з пробілами по краях, так і без них.
Значення TV «tags»:
Коти, Кішки, Собаки, Ведмеді, Слони
Виклик сніпета в шаблоні документа:
[[ddGetMultipleField? &string=`[*tags*]` &rowDelimiter=`/\s*,\s*/` &rowGlue=`, ` &rowTpl=`tagsRow` ]]
Код чанка «tagsRow»:
<a href="[~[*parent*]~]?tags=[+col0+]">[+col0+]</a>
Результат:
<a href="[~[*parent*]~]?tags=Коти">Коти</a>, <a href="[~[*parent*]~]?tags=Кішки">Кішки</a>, <a href="[~[*parent*]~]?tags=Собаки">Собаки</a>, <a href="[~[*parent*]~]?tags=Ведмеді">Ведмеді</a>, <a href="[~[*parent*]~]?tags=Слони">Слони</a>
Сніпет типографується текст. Не використовує сторонніх сервісів, не відправляє ніяких запитів, все здійснюється на вашому сервері.
Назва | Опис | Допустимі значення | Значення за замовчуванням |
---|---|---|---|
text * | Текст, який потрібно типографувати. | {string} | – |
optAlign | Оптичні вирівнювання (висяча пунктуація). | {0; 1} | 0 |
text_paragraphs | Простановка параграфів і переносів рядків. | {0; 1} | 0 |
text_autoLinks | Виділення силки з тексту (в тому числі email). | {0; 1} | 0 |
etc_unicodeConvert | Перетворювати html-суті в юнікод (– замість — і т.д.). | {0; 1} | 1 |
noTags | Не додавати теги. Бувають ситуації, коли використовування HTML-тегів в тексті недопустимо (наприклад, коли текст виводиться в значення атрибуту тега), для таких випадків і призначений цей параметр. | {0; 1} | 0 |
Приклади
Типографування анотації перед виводом
[[ddTypograph? &text=`[*introtext*]`]]
Типографування анотації з автоматичним розставленням абзаців, силок і адрес email
[[ddTypograph? &text=`[*introtext*]` &text_paragraphs=`1` &text_autoLinks=`1`]]
Типографування анотації з автоматичним оптичним вирівнюванням (висячі лапки і пр.)
[[ddTypograph? &text=`[*introtext*]` &optAlign=`1`]]
Сніпет для виводу на сторінку Яндекс. Карт у звичайному вигляді.
Зручно використовувати спільно з віджетом mm_ddYMap.
Увага! На сторінці вже повинен бути підключений jQuery.
З пари параметрів «geoPos» / «docField» необхідно передавати лише один.
Сніпет можна викликати в будь-якому місці сторінки, місце його виклику не має значення.
Назва | Опис | Допустимі значення | Значення за замовчуванням |
---|---|---|---|
geoPos * | Координати на карті (широти і довготи, перечислені через кому). | {comma separated string} | – |
docField | Ім'я поля документа, що має координати, значення якого необхідно отримати. | {string} | – |
docId | ID документа, значення поля якого потрібно отримати. | {integer} | Поточний документ |
mapElement | Селектор контейнера, де буде знаходитись карта. | {string} | '#map' |
defaultType | Тип карти за замовчуванням: 'map' – схема, 'satellite' – супутник, 'hybrid' – гібрид, 'publicMap' – народна карта, 'publicMapHybrid' – народний гібрид. | {'map'; 'satellite'; 'hybrid'; 'publicMap'; 'publicMapHybrid'} | 'map' |
defaultZoom | Масштаб карти за замовчуванням. | {integer} | 15 |
icon | Зображення іконки для мітки на карті. | {string} | без іконки (використовується стандартна) |
iconOffset | Зміщення іконки в пікселях відносно базового положення, задається в вигляді пар чисел, розділених комою (x, y). Базові положення: іконка розташовується горизонтально по центру точки (geoPos), вертикально – над точкою. | {comma separated string} | – |
scrollZoom | Чи розширено зміни масштабу карти колесом миші? | {0; 1} | 0 |
mapCenterOffset | Зміщення центру карти відносно центру контейнера в пікселях. | {comma separated string} | – |
Приклади
[[ddYMap? &geoPos=`55.177446326764496,61.29041790962219`]]