Дополнительно

    ManagerManager: Дополнительно

    Дополнения плагина ManagerManager для настройки внешнего вида ресурса в бэкэнд сайта.

    Модуль ddMMEditor

    Модуль для удобного редактирования файла конфигурации плагина ManagerManager.

    Возможности:

    • визуальное создание правил для MM;
    • применение правил к необходимым шаблонам и ролям в два клика;
    • autocomplete со всеми именами полей и TV;
    • объединение правил в группы по смыслу (группы можно называть произвольными именами);
    • сворачивание-разворачивание групп для удобного просмотра в общем виде;
    • drag'n'drop правил и групп между собой;
    • возможность «ручной» вставки произвольного кода в начало и конец конфигурационного файла.

    Установка

    Содержимое файла module.php должно быть скопировано в поле «Код модуля» в меню создания нового модуля. Остальные файлы должны находиться в assets/modules/ddmmeditor/... (в архиве уже создана нужная структура папок). Модуль изменяет файл assets/plugins/managermanager/mm_rules.inc.php плагина ManagerManager.

    Внимание! Чтобы ManagerManager использовал правила, созданные модулем, параметр «Configuration Chunk» в конфигурации плагина (вкладка «Конфигурация») должен быть пустым.

    Сниппет ddGetMultipleField

    Сниппет для вывода данных, разделённых через определённые разделители. Удобно использовать для вывода значений полей документов, сформированных виджетом mm_ddMultipleFields. Возможности:

    • Получение необходимого поля документа (и TV) по id. Параметры «docField» и «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»

    Внимание! Из пары параметров «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>

    Сниппет ddTypograph

    Сниппет типографирует текст. Не использует сторонних сервисов, не отправляет никаких запросов, всё делается прямо у вас на сервере.

    НазваниеОписаниеДопустимые значенияЗначение по умолчанию
    text * Текст, который нужно типографировать. {string}
    optAlign Оптическое выравнивание (висячая пунктуация). {0; 1} 0
    text_paragraphs Простановка параграфов и переносов строк. {0; 1} 0
    text_autoLinks Выделение ссылок из текста (в том числе email). {0; 1} 0
    etc_unicodeConvert Преобразовывать html-сущности в юникод (– вместо &mdash; и т.д.). {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`]]

    Сниппет ddYMap

    Сниппет для вывода на страницу Яндекс.Карт в простом виде.

    Удобно использовать совместно с виджетом 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`]]