Дополнения плагина 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`]]