ManagerManager
«Диван.Дизайн»
Перейти

ManagerManager позволяет вам настраивать внешний вид страницы создания/редактирования ресурса в бэкэнде вашего сайта. Вы можете переименовывать, скрывать и перемещать основные и дополнительные параметры ресурса и вкладки. И делать это для конкретных ролей пользователей или шаблонов. Абсолютная власть!

Установка

Новая установка

Данный плагин уже входит в установочный комплект MODx Evolution, поэтому, прежде чем его устанавливать, проверьте его наличие и версию в Элементы >> Управление элементами >> Плагины.

1. Скачайте последнюю версию ManagerManager

2. Разархивируйте скачанный файл.

3. В панели управления сайтом создайте новый плагин «ManagerManager», вставьте содержимое из файла plugin.txt.

4. Во вкладке "Системные события" отметьте события:

  • OnDocFormRender
  • OnDocFormPrerender
  • OnBeforeDocFormSave
  • OnDocFormSave
  • OnDocDuplicate
  • OnPluginFormRender
  • OnTVFormRender

5. Во вкладке "Конфигурация" вставьте нижеприведённый код в поле "Конфигурация плагина:", и щёлкните "Обновить параметры":

&remove_deprecated_tv_types_pref=Remove deprecated TV types;list;yes,no;yes &config_chunk=Configuration Chunk;text;

6. Скопируйте все файлы из архива (кроме plugin.txt) на сайт (необходимая структура папок и файлов соблюдена в архиве, файлы плагина должны оказаться в /assets/plugins/managermanager)

7. Если вы хотите редактировать правила в панели управления сайтом, создайте чанк «mm_rules» (или с любым другим именем) и укажите его в параметре плагина «Configuration Chunk» (на вкладке «Конфигурация»). Если вы хотите редактировать правила в фале, редактируйте файл /assets/plugins/managermanager/mm_rules.inc.php. Внимание, параметр плагина «Configuration Chunk» должен быть пустым.

Внимание, необходимо отключить плагин «ShowImageTVs» (если он у вас есть) и использовать вместо него виджет mm_widget_showimagetvs

Обновление

Удалите все файлы из папки /assets/plugins/managermanager/ и сам плагин ManagerManager, затем установите заново, следуя вышеописанным инструкциям.

Виджеты

Все виджеты уже содержатся в архиве, ничего дополнительно устанавливать не нужно

Параметры

Название полей

Имя параметра в MMЗаголовок параметра
pagetitle Заголовок ресурса
longtitle Расширенный заголовок
description Описание
alias Псевдоним
link_attributes Атрибуты ссылки
introtext Аннотация (введение)
template Шаблон
menutitle Пункт меню
menuindex Позиция в меню
show_in_menu Показывать в меню
hide_menu Противоположность "Показывать в меню"
parent Папка
is_folder Контейнер (содержит дочерние ресурсы)
is_richtext Использовать HTML-редактор
log Регистрировать посещения:
published Публиковать
pub_date Дата публикации
unpub_date Дата отмены публикации
searchable Доступен для поиска
cacheable Кэшируемый
clear_cache Очистить кэш?
content_type Тип содержимого
content_dispo Местонахождение содержимого
keywords Ключевые слова
metatags META-теги
content Содержимое ресурса
which_editor Редактор
resource_type Тип ресурса

Названия вкладок

Имена вкладок в MMИмена вкладок
general Общие
settings Настройка страницы
access Права доступа
meta Ключевые слова

Названия секций

Имена секций в MMИмена секций
content Содержимое ресурса
tvs Параметры (TV)
access Права доступа

Виджеты

Ограничение ввода данных

Синтаксис: mm_ddMaxLength($fields, $roles, $templates, $length)
Описание параметров:
НазваниеОписаниеДопустимые значенияЗначение по умолчанию
fields * Поля документа (или TV), для которых необходимо применить виджет. {comma separated string}
roles Роли, для которых необходимо применить виждет, пустое значение — все роли. {comma separated string}
templates Id шаблонов, для которых необходимо применить виджет, пустое значение — все шаблоны. {comma separated string}
length Максимальное количество символов, которые можно ввести. {integer} 150

Пример: Подключение виджета для TV «Slogan», ограничив количество вводимых символов до 140
mm_ddMaxLength('Slogan', '', '', 140);

Синтаксис: mm_ddNumericFields($tvs, $roles, $templates, $allowFloat, $decimals)
Описание параметров:
НазваниеОписаниеДопустимые значенияЗначение по умолчанию
tvs * Имена TV, для которых необходимо применить виджет. {comma separated string}
roles Роли, для которых необходимо применить виждет, пустое значение — все роли. {comma separated string}
templates Id шаблонов, для которых необходимо применить виджет, пустое значение — все шаблоны. {comma separated string}
allowFloat Можно ли вводить числа с плавающей запятой? {0; 1} 1
decimals Количество цифр после запятой (0 — любое). {integer} 0

Пример: Сделать возможным ввод только цифр с точностью в 2 знака после запятой в TV «price» для шаблонов c id, равным 15 или 16 и всех ролей
mm_ddNumericFields('price', '', '15,16', 1, 2);

Синтаксис: mm_hideTemplates($tplIds, $roles, $templates)
Описание параметров:
НазваниеОписаниеДопустимые значенияЗначение по умолчанию
tplIds * Id шаблонов, которые необходимо скрыть из списка. {comma separated string}
roles Роли, для которых необходимо применить виждет, пустое значение — все роли. {comma separated string}
templates Id шаблонов, для которых необходимо применить виджет, пустое значение — все шаблоны. {comma separated string}

Пример: Скрыть шаблоны с id = 0 и 4 из списка во всех документах для пользователей с id роли = 1
mm_hideTemplates('0,4', '1');

Синтаксис: mm_hideFields($fields, $roles, $templates)
Описание параметров:
НазваниеОписаниеДопустимые значенияЗначение по умолчанию
fields * Поля документа (или TV), которые необходимо скрыть. {comma separated string}
roles Роли, для которых необходимо применить виждет, пустое значение — все роли. {comma separated string}
templates Id шаблонов, для которых необходимо применить виджет, пустое значение — все шаблоны. {comma separated string}

Пример: Скрыть поле «псевдоним» у документов с id шаблона = 3 для пользователей с id роли = 1
mm_hideFields('alias', '1', '3');

Синтаксис: mm_ddReadonly($fields, $roles, $templates)
Описание параметров: Значения отображаются при редактировании, но их невозможно изменить.
Довольно редко, но иногда бывают случаи, когда мы храним какую-то информацию о документе в его TV (например, количество просмотров или скачиваний, рейтинг и т.д.). Такая информация обновляется автоматически (какой-нибудь сниппет/плагин просто сохраняет значение в TV соответствующего документа). И вот Петя вдруг решил отредактировать текст документа: открыл, начал писать, его отвлекли по работе, потом позвонили, потом срочно пришлось уехать, два часа ездил, вернулся, продолжил редактировать. Всё это время документ у него был открыт, данные о количестве скачиваний уже 100 раз успели поменяться (было 3, а стало 33), но у Пети до сих пор отображается 3. Петя закончил свою работу, нажимает «Сохранить» и… количество скачиваний перезаписывается на 3! Неприятная ситуация. Что можно сделать? Вариант 1: можно сделать какую-нибудь супер-системную группу и выставить её для тех TV, значения которых не должны редактироваться пользователями. Неплохой вариант, но не надёжный (может найтись кто-то, кто поставит себе эту группу и обязательно что-то испортит) и не подходит, если хочется видеть эти данные при редактировании документа. Именно для таких случаев и предназначен этот виджет.
Работа виджета делится на 3 части:
Перед сохранением документа OnBeforeDocFormSave) получаются и запоминаются актуальные значения необходимых полей (из базы).
После сохранения (OnDocFormSave) записываются обратно.
JS делает поля визуально не редактируемыми.
НазваниеОписаниеДопустимые значенияЗначение по умолчанию
fields * Поля документа (или TV), которые необходимо сделать доступными только для чтения. {comma separated string}
roles Роли, для которых необходимо применить виждет, пустое значение — все роли. {comma separated string}
templates Id шаблонов, для которых необходимо применить виджет, пустое значение — все шаблоны. {comma separated string}

Пример: Сделать поле TV «myVar» доступным только для чтения для пользователей с id роли = 2
mm_ddReadonly('myVar', '2');

Синтаксис: mm_requireFields($fields, $roles, $templates)
Описание параметров: Добавляет звёздочку красного цвета рядом с именем обязательного для заполнения поля, выдаёт сообщение при попытке сохранить не заполнив обязательные поля, предотвращая сохранение.
НазваниеОписаниеДопустимые значенияЗначение по умолчанию
fields * Поля документа (или TV), которые должны быть обязательными. {comma separated string}
roles Роли, для которых необходимо применить виждет, пустое значение — все роли. {comma separated string}
templates Id шаблонов, для которых необходимо применить виджет, пустое значение — все шаблоны. {comma separated string}

Пример: Сделать обязательным для заполнения заголовки и даты публикации всех документов
mm_requireFields('pagetitle,pub_date');

Установка необходимых значений

Синтаксис: mm_inherit($fields, $roles, $templates)
Описание параметров:
НазваниеОписаниеДопустимые значенияЗначение по умолчанию
fields * Поля документа (или TV), которые необходимо наследовать. {comma separated string}
roles Роли, для которых необходимо применить виждет, пустое значение — все роли. {comma separated string}
templates Id шаблонов, для которых необходимо применить виджет, пустое значение — все шаблоны. {comma separated string}

Пример: Выставлять всем новым документам заголовок как у родителя для пользователей с id ролью = 0 или 1
mm_inherit('pagetitle', '0,1');

Синтаксис: mm_default($fields, $value, $roles, $templates, $eval)
Описание параметров: Сейчас TV задаются как «tvN», где N — id TV.
НазваниеОписаниеДопустимые значенияЗначение по умолчанию
fields * Поля документа (или TV), для которых необходимо установить значение по умолчанию. {comma separated string}
value Значение по умолчанию. Если в качестве поля указано «pub_date» или «unpup_date», а значение пустое, то выставится текущая дата. Также значение может являться строкой PHP-кода, который будет выполнен при параметре «eval» = true. {string}
roles Роли, для которых необходимо применить виждет, пустое значение — все роли. {comma separated string}
templates Id шаблонов, для которых необходимо применить виджет, пустое значение — все шаблоны. {comma separated string}
eval Необходимо ли обрабатывать значение параметра «value» как PHP-код? {bollean} false

Пример: Автоматически выставлять дату отмены публикации спустя 4 недели от текущей для документов с id шаблона = 4
mm_default('unpub_date', 'return date("d-m-Y H:i:s", now()+(60*60*24*28));', '', '4', true);

Синтаксис: mm_ddSetFieldValue($fields, $value, $roles, $templates)
Описание параметров: Похож на mm_default, но выставляет всегда.
НазваниеОписаниеДопустимые значенияЗначение по умолчанию
fields * Имена полей документа или TV, для которых необходимо установить значение. {comma separated string}
value Значение, которое необходимо установить. {string}
roles Роли, для которых необходимо применить виждет, пустое значение — все роли. {comma separated string}
templates Id шаблонов, для которых необходимо применить виджет, пустое значение — все шаблоны. {comma separated string}

Пример: У документов с шаблонами id = 1 и 3 выставить значение TV «someTv» в 'this is some' для редакторов (роль с id = 2)
mm_ddSetFieldValue('someTv', 'this is some', '2', '1,3');

Синтаксис: mm_synch_fields($fields, $roles, $templates)
Описание параметров: Например: чтобы заголовок и пункт меню документа были одинакомыми, — особенно удобно, когда одно из полей скрыто. Работает только с текстовыми полями (input, textarea).
НазваниеОписаниеДопустимые значенияЗначение по умолчанию
fields * Поля документа (или TV), которые необходимо синхронизировать. Необходимо задать минимум 2 поля. {comma separated string}
roles Роли, для которых необходимо применить виждет, пустое значение — все роли. {comma separated string}
templates Id шаблонов, для которых необходимо применить виджет, пустое значение — все шаблоны. {comma separated string}

Пример: Сделать значения этих полей всегда одинаковыми (для всех пользователей и документов)
mm_synch_fields('pagetitle,menutitle,longtitle');

Изменение названий и подсказок

Синтаксис: mm_renameField($fields, $newlabel, $roles, $templates, $newhelp)
Описание параметров:
НазваниеОписаниеДопустимые значенияЗначение по умолчанию
fields * Поля документа или TV, которые необходимо переименовать. {comma separated string}
newlabel * Новый текст для отображения. {string}
roles Роли, для которых необходимо применить виждет, пустое значение — все роли. {comma separated string}
templates Id шаблонов, для которых необходимо применить виджет, пустое значение — все шаблоны. {comma separated string}
newhelp Новый текст подсказки, всплывающей при наведении на иконку рядом с полем, или описания для TV. {string}

Пример: Переименовать поле «заголовок» у документов с id шаблона = 3 для всех пользователей
mm_renameField('longtitle', 'ФИО', '', '3');

Синтаксис: mm_changeFieldHelp($field, $helptext, $roles, $templates)
Описание параметров:
НазваниеОписаниеДопустимые значенияЗначение по умолчанию
field * Поле документа (или TV), у которого необходимо изменить подсказку. {string}
helptext * Новый текст подсказки. {string}
roles Роли, для которых необходимо применить виждет, пустое значение — все роли. {comma separated string}
templates Id шаблонов, для которых необходимо применить виджет, пустое значение — все шаблоны. {comma separated string}

Пример: Изменить подсказку для поля «псевдоним» у всех документов для пользователей с id роли = 3
mm_changeFieldHelp('alias', 'Это последний фрагмент адреса страницы', '3');

Расширение функционала ввода данных

Синтаксис: mm_ddMultipleFields($tvs, $roles, $templates, $columns, $columnsTitle, $colWidth, $splY, $splX, $imgW, $imgH, $minRow, $maxRow, $columnsData)
Описание параметров: Значения записываются в одно через необходимые разделители, например: несколько изображений. Возможности:
Добавление к одному документу произвольного количества изображений, текстовых полей, списков (с возможностью выбора значений).
Задание нескольких колонок разных типов (или одинаковых), например: изображения и подписи к ним (параметр «coloumns»).
Вывод заголовков колонок (параметр «coloumnsTitle»).
Количество значений (строк) может быть как фиксированным, динамичным, так и в определённых диапазонах (параметры «minRow» и «maxRow»).
Сортировка (перетаскивание) строк между собой.
Генерация уникального идентификатора каждой строки (параметр «coloumns»).
Вывод предопределённых списков значений (параметры «coloumns» и «coloumnsData»). Внимание, это пока в бете!
Для вывода данных используйте сниппет ddGetMultipleField.
НазваниеОписаниеДопустимые значенияЗначение по умолчанию
tvs * Имена TV, для которых необходимо применить виджет. {comma separated string}
roles Роли, для которых необходимо применить виждет, пустое значение — все роли. {comma separated string}
templates Id шаблонов, для которых необходимо применить виджет, пустое значение — все шаблоны. {comma separated string}
columns Типы колонок:
  • field — колонка типа поля;
  • text — текстовая колонка;
  • textarea — колонка с многострочным полем;
  • richtext — колонка с HTML-редактором (TinyMCE);
  • date — колонка с датой;
  • id — скрытая колонка с уникальным идентификатором;
  • select — список с выбором значений (см. параметр «coloumnsData»).
{comma separated string} 'field'
columnsTitle Заголовки колонок. {comma separated string}
colWidth Ширины колонок (может быть задана одна ширина). {comma separated string} 180
splY Разделитель между строками. {string} '||'
splX Разделитель между колонками. {string} '::'
imgW Максимальная ширина превьюшки (для изображений). {integer} 300
imgH Максимальная высота превьюшки (для изображений). {integer} 100
minRow Минимальное количество строк. {integer} 0
maxRow Максимальное количество строк (0 — без лимита). {integer} 0
columnsData Список возможных значений для полей в формате json, через ||. {separated string}

Пример: Возможность добавления контактов сотрудников, но не более 5 и не меньше 2, с разными размерами колонок (для текстовой tv «employees»)
mm_ddMultipleFields('employees', '', '', 'text,text,text', 'Имя,Телефон,Должность', '250,100,100', '||', '::', 300, 100, 2, 5);

Синтаксис: mm_ddSelectDocuments($tvs, $roles, $templates, $parentIds, $depth, $filter, $max, $labelMask)
Описание параметров:
НазваниеОписаниеДопустимые значенияЗначение по умолчанию
tvs * Имена TV, для которых необходимо применить виджет. {comma separated string}
roles Роли, для которых необходимо применить виждет, пустое значение — все роли. {comma separated string}
templates Id шаблонов, для которых необходимо применить виджет, пустое значение — все шаблоны. {comma separated string}
parentIds * Id родительских документов, дочерние документы которых необходимо выбирать. {comma separated string}
depth Глубина поиска дочерних документов. {integer} 1
filter Условия фильтрации документов (чем-то похож на фильтр Ditto), разделённые через '&' между парами и через '=' между ключом и значением. Например: 'template=15&published=1', — получим только опубликованные документы с id шаблона 15. {separated string}
max Максимальное количество документов, которое пользователь может выбрать (при == 0 — без ограничений). {integer} 0
labelMask Шаблон отображения элемента в списке выбора документов. Задаётся как строка, содержащая плэйсхолдеры с полями документа (и TV). Также доступен дополнительный плэйсхолдер '[+title+]', в который будет подставлено значение поля «menutitle», а если оно не заполнено, то «pagetitle». {string} '[+title+] ([+id+])'

Пример:
mm_ddSelectDocuments();

Синтаксис: mm_widget_tags($fields, $delimiter, $source, $display_count, $roles, $templates)
Описание параметров: Для нужной TV автоматически формируется «список» выбора со всеми тегами, при этом, новые теги просто вписываются через разделитель здесь же) на странице редактирования документа. TV должна быть текстового типа.
НазваниеОписаниеДопустимые значенияЗначение по умолчанию
fields * TV, для которых необходимо отобразить теги. {comma separated string}
delimiter Разделитель между тегами в поле {string} ','
source TV, из которых должны браться теги для списка выбра. Это позволяет использовать разные поля для ввода тегов и формирования списка выбора. По умолчанию значение берётся из параметра «fields». Не используйте этот параметр, если не уверены. {comma separated string} = fields
display_count Отображать ли в списке выбора количество документов, в которых используется тег (в скобочках после самого тега)? {boolean} false
roles Роли, для которых необходимо применить виждет, пустое значение — все роли. {comma separated string}
templates Id шаблонов, для которых необходимо применить виджет, пустое значение — все шаблоны. {comma separated string}

Пример: Сделать для TV «docTags» виджет тегов с отображением количества документов, использующих каждый тег рядом с ним у документов с id шаблона = 2 для всех ролей
mm_widget_tags('docTags', ',', '', '1', '', '2');

Синтаксис: mm_widget_colors($fields, $default, $roles, $templates)
Описание параметров: Выбранный цвет сохраняется в TV в hex формате. TV должна быть текстового типа.
НазваниеОписаниеДопустимые значенияЗначение по умолчанию
fields * TV, для которых необходимо отобразить палитру цветов. {comma separated string}
default Цвет по умолчанию, который будет вставляться при пустом значении в TV (в случае, если значение по умолчанию у TV не задано стандартными средствами MODx). {string} '#ffffff'
roles Роли, для которых необходимо применить виждет, пустое значение — все роли. {comma separated string}
templates Id шаблонов, для которых необходимо применить виджет, пустое значение — все шаблоны. {comma separated string}

Пример: Добавить палитру выбора цветов для TV «bgcolor» у документов с id шаблона = 2 для пользователей с id роли = 1 и выставить чёрный цвет по умолчанию
mm_widget_colors('bgcolor', '#000000', '1', '2');

Работа с секциями

Синтаксис: mm_ddCreateSection($title, $id, $tabId, $roles, $templates)
Описание параметров:
НазваниеОписаниеДопустимые значенияЗначение по умолчанию
title * Текст заголовка новой секции. {string}
id * Уникальный id новой секции. {string}
tabId Id вкладки, в которую будет вставлена секция. Можно указать как id одной из стандартных вкладок, так и id вкладки, созданной при помощи mm_createTab. {string} 'general'
roles Роли, для которых необходимо применить виждет, пустое значение — все роли. {comma separated string}
templates Id шаблонов, для которых необходимо применить виджет, пустое значение — все шаблоны. {comma separated string}

Пример: Создать секцию с заголовком «Категории» в основной вкладке у всех документов для всех пользователей
mm_ddCreateSection('Категории', 'mycats');

Синтаксис: mm_ddMoveFieldsToSection($fields, $sectionId, $roles, $templates)
Описание параметров: К сожалению, невозможно переместить следующие поля: keywords, metatags, which_editor, show_in_menu, menuindex.
НазваниеОписаниеДопустимые значенияЗначение по умолчанию
fields * Поля документа (или TV), которые необходимо переместить. {string}
sectionId * Id секции, в которую необходимо переместить поля. Можно указать как id одной из стандартных секций, так и id секции, созданной при помощи mm_ddCreateSection. {string}
roles Роли, для которых необходимо применить виждет, пустое значение — все роли. {comma separated string}
templates Id шаблонов, для которых необходимо применить виджет, пустое значение — все шаблоны. {comma separated string}

Пример: Переместить TV «profilePhoto» в секцию «images» для всех пользователей и шаблонов
mm_ddMoveFieldsToSection('profilePhoto', 'images');

Синтаксис: mm_hideSections($sections, $roles, $templates)
Описание параметров: «Секции» — это такие области на странице редактирования документа, например: «Содержимое ресурса» или «Параметры (TV)».
НазваниеОписаниеДопустимые значенияЗначение по умолчанию
$sections * Секции, которые необходимо скрыть. {comma separated string}
$roles Роли, для которых необходимо применить виждет, пустое значение — все роли. {comma separated string}
$templates Id шаблонов, для которых необходимо применить виджет, пустое значение — все шаблоны. {comma separated string}

Пример: Скрыть секции «Содержимое ресурса» и «Параметры (TV)» у документов с id шаблона = 3 для пользователей с id роли = 1
mm_hideSections('content,tvs', '1', '3');

Синтаксис: mm_renameSection($section, $newlabel, $roles, $templates)
Описание параметров: «Секции» — это такие области на странице редактирования документа, например: «Содержимое ресурса» или «Параметры (TV)».
НазваниеОписаниеДопустимые значенияЗначение по умолчанию
$section * Секция, которую необходимо переименовать. {'content'; 'tvs'}
$newlabel * Новый текст заголовка секции. {string}
$roles Роли, для которых необходимо применить виждет, пустое значение — все роли. {comma separated string}
$templates Id шаблонов, для которых необходимо применить виджет, пустое значение — все шаблоны. {comma separated string}

Пример: Переименовать секцию контента документа для пользователей с id роли = 2
mm_renameSection('content', 'Текстик (отображается на страничке)', '2');

Работа с вкладками

Синтаксис: mm_createTab($name, $id, $roles, $templates, $intro, $width)
Описание параметров:
НазваниеОписаниеДопустимые значенияЗначение по умолчанию
name * Текст заголовка новой вкладки. {string}
id * Уникальный id новой вкладки. {string}
roles Роли, для которых необходимо применить виждет, пустое значение — все роли. {comma separated string}
templates Id шаблонов, для которых необходимо применить виджет, пустое значение — все шаблоны. {comma separated string}
intro Описание новой вкладки, отображается в самом верху (можно использовать HTML). {string}
width Ширина содержимого новой вкладки, можно использовать css значения (например: '100%', '450px', 'auto'). {string} 680

Пример: Создать новую вкладку шириной 450px с описанием у документов с id шаблона = 3 или 4
mm_createTab('SEO', 'seoTab', '', '3,4', '  Здесь вы можете отредактировать всё, что касается поисковой оптимизации. ', '450');

Синтаксис: mm_moveFieldsToTab($fields, $tabId, $roles, $templates)
Описание параметров: К сожалению, невозможно переместить следующие поля: keywords, metatags, which_editor, show_in_menu, menuindex.
НазваниеОписаниеДопустимые значенияЗначение по умолчанию
fields * Поля документа (или TV), которые необходимо переместить. {comma separated string}
tabId * Id вкладки, в которую необходимо переместить поля. Можно указать как id одной из стандартных вкладок, так и id вкладки, созданной при помощи mm_createTab. {string}
roles Роли, для которых необходимо применить виждет, пустое значение — все роли. {comma separated string}
templates Id шаблонов, для которых необходимо применить виджет, пустое значение — все шаблоны. {comma separated string}

Пример: Переместить дату публикации документа в основную вкладку для пользователей с id роли = 2
mm_moveFieldsToTab('pub_date', 'general', '2');

Синтаксис: mm_hideTabs($tabs, $roles, $templates)
Описание параметров:
НазваниеОписаниеДопустимые значенияЗначение по умолчанию
tabs * Id вкладок, которые необходимо скрыть. {'general'; 'settings'; 'access'}
roles Роли, для которых необходимо применить виждет, пустое значение — все роли. {comma separated string}
templates Id шаблонов, для которых необходимо применить виджет, пустое значение — все шаблоны. {comma separated string}

Пример: Скрыть вкладку «Права доступа» у документов с id шаблона = 3 для пользователей с id роли = 1
mm_hideTabs('access', '1', '3');

Синтаксис: mm_renameTab($tab, $newlabel, $roles, $templates)
Описание параметров:
НазваниеОписаниеДопустимые значенияЗначение по умолчанию
tab * Id вкладки, которую необходимо переименовать. {'general'; 'settings'; 'access'}
newlabel * Новый текст заголовка вкладки. {string}
roles Роли, для которых необходимо применить виждет, пустое значение — все роли. {comma separated string}
templates Id шаблонов, для которых необходимо применить виджет, пустое значение — все шаблоны. {comma separated string}

Пример: Переименовать вкладку «Общие» для пользователей с id роли = 2
mm_renameTab('general', 'Основное', '2');

Карты

Синтаксис: mm_ddGMap($tvs, $roles, $templates, $w, $h, $hideField)
Описание параметров: Начальная позиция карты задаётся очень просто: достаточно указать необходимые координаты в качестве «значения по умолчанию» соответствующей TV.
НазваниеОписаниеДопустимые значенияЗначение по умолчанию
tvs * Имена TV, для которых необходимо применить виджет. {comma separated string}
roles Роли, для которых необходимо применить виждет, пустое значение — все роли. {comma separated string}
templates Id шаблонов, для которых необходимо применить виджет, пустое значение — все шаблоны. {comma separated string}
w Ширина контейнера с картой. {'auto'; integer} 'auto'
h Высота контейнера с картой. {integer} 400
hideField Необходимо ли скрывать оригинальное текстовое поле с координатами. {0; 1} 1

Пример: Подключение виджета Google Maps для TV «LatLng»
mm_ddGMap('LatLng');

Синтаксис: mm_ddYMap($tvs, $roles, $templates, $w, $h, $hideField)
Описание параметров: Для простого вывода карты на страницу используйте сниппет ddYMap. Начальная позиция карты задаётся очень просто: достаточно указать необходимые координаты в качестве «значения по умолчанию» соответствующей TV.
НазваниеОписаниеДопустимые значенияЗначение по умолчанию
tvs * Имена TV, для которых необходимо применить виджет. {comma separated string}
roles Роли, для которых необходимо применить виждет, пустое значение — все роли. {comma separated string}
templates Id шаблонов, для которых необходимо применить виджет, пустое значение — все шаблоны. {comma separated string}
w Ширина контейнера с картой. {'auto'; integer} 'auto'
h Высота контейнера с картой. {integer} 400
hideField Необходимо ли скрывать оригинальное текстовое поле с координатами. {0; 1} 1

Пример: Подключение виджета Yandex Maps для TV «LngLat»
mm_ddYMap('LngLat');

Прочее

Синтаксис: mm_widget_showimagetvs($fields, $maxWidth, $maxHeight, $thumbnailerUrl, $roles, $templates)
Описание параметров: Аналогичен плагину ShowImageTVs, который не совместим с ManagerManager.
НазваниеОписаниеДопустимые значенияЗначение по умолчанию
fields TV, для которых необходимо отобразить превьюшки. {comma separated string}
maxWidth Максимальная ширина превьюшки в px. {integer} 300
maxHeight Максимальная высота превьюшки в px. {integer} 100
thumbnailerUrl Если у вас установлен PHPThumb, вы можете указать url, где он находится, адрес превью будет обращён к нему с передачей url исходной картинки, ширины и высоты. {string}
roles Роли, для которых необходимо применить виждет, пустое значение — все роли. {comma separated string}
templates Id шаблонов, для которых необходимо применить виджет, пустое значение — все шаблоны. {comma separated string}

Пример: Показать превью для TV «mypic» у документов с id шаблона = 2 и отправить за одно на генерацию в phpThumb для получения превьюшек размером 300×200 px
mm_widget_showimagetvs('mypic', '300', '200', '/assets/snippets/phpthumb/phpThumb.php', '', '2');

Синтаксис: mm_ddResizeImage($tvs, $roles, $templates, $width, $height, $cropping, $suffix, $replaceFieldVal, $background, $multipleField, $colNum, $splY, $splX, $num, $allowEnlargement)
Описание параметров: Виджет срабатывает только в момент сохранения документов (событие «OnBeforeDocFormSave») и не создаёт изображений повторно, что обеспечивает минимальный расход ресурсов сервера.
НазваниеОписаниеДопустимые значенияЗначение по умолчанию
tvs * Имена TV с изображениями, для которых необходимо применить виджет. {comma separated string}
roles Роли, для которых необходимо применить виждет, пустое значение — все роли. {comma separated string}
templates Id шаблонов, для которых необходимо применить виджет, пустое значение — все шаблоны. {comma separated string}
width * Ширина создаваемого изображения в px. Пустое значение — автоматический расчёт исходя из высоты. Обязателен хотя бы один размер. {integer}
height * Высота создаваемого изображения в px. Пустое значение — автоматический расчёт исходя из ширины. Обязателен хотя бы один размер. {integer}
cropping Обрезать ли изображение, пытаясь добиться жесткого соответствия размерам.
  • 0 — не обрезать;
  • 1 — просто обрезать (не изменяя масштаб);
  • 'crop_resized' — сначала уменьшить, затем обрезать;
  • 'fill_resized' — пропорционально уменьшить, заполнив образовавшиеся поля цветом («background»).
{0; 1; 'crop_resized'; 'fill_resized'} 'crop_resized'
suffix Суффикс для имен создаваемых изображений. При пустом значении заменяются исходные изображения! {string} '_ddthumb'
replaceFieldVal Нужно ли переписывать значения в TV на имена созданных изображений (те, что с учётом «suffix»). Не работает при multipleField = 1! {0; 1} 0
background Цвет фона (используется при cropping = 'fill_resized'). {string} '#FFFFFF'
multipleField Является ли поле множественным (для mm_ddMultipleFields). {0; 1} 0
colNum Номер колонки, в которой находится изображение (для mm_ddMultipleFields). {integer} 0
splY Разделитель строк (для mm_ddMultipleFields). {string} '||'
splX Разделитель колонок (для mm_ddMultipleFields). {string} '::'
num Номер строки, которую надо обрабатывать (для mm_ddMultipleFields). {integer; 'all'} 'all'
allowEnlargement Разрешить увеличение изображения? {0; 1} 1

Пример: Создать для изображений, выставленных в TV «imageTV», уменьшенные копии, перезаписывая значения в TV
mm_ddResizeImage('imageTV', '', '', 200, 100, 'crop_resized', '_ddthumb', 1);

Синтаксис: mm_ddAutoFolders($roles, $templates, $yearsParents, $dateSource, $yearFields, $monthFields, $yearPublished, $monthPublished, $numericMonth)
Описание параметров:
НазваниеОписаниеДопустимые значенияЗначение по умолчанию
roles Роли, для которых необходимо применить виждет, пустое значение — все роли. {comma separated string}
templates * Id шаблонов, для которых необходимо применить виджет. {comma separated string}
yearsParents * ID корневых родителей (непосредственных родителей документов-лет). {comma separated string}
dateSource Поле документа, из которого необходимо брать дату. {string} 'pub_date'
yearFields Поля документов (и TV), которые необходимо выставить документам-годам. Ассоциативный массив в JSON, где ключ — имя поля, значение — значение. {string: JSON} '{"template":0,"published":0}'
monthFields Поля документов (и TV), которые необходимо выставить документам-месяцам. Ассоциативный массив в JSON, где ключ — имя поля, значение — значение. {string: JSON} '{"template":0,"published":0}'
yearPublished Внимание! Устаревший параметр, используйте «$yearFields». Надо ли публиковать документы-годы? {0; 1}
monthPublished Внимание! Устаревший параметр, используйте «$monthFields». Надо ли публиковать документы-месяцы? {0; 1}
numericMonth Нужно ли документам-месяцам делать псевдонимы в виде порядкового номера с ведущим нолём (например: «03»). {boolean} false

Пример:
mm_ddAutoFolders();

Синтаксис: mm_ddFillMenuindex($parent)
Описание параметров: По умолчанию позиция меню в MODx для новых документов просто равна количеству дочерних документов на одном уровне, что не всегда удобно.
НазваниеОписаниеДопустимые значенияЗначение по умолчанию
parent ID документа, для дочерних документов которого должен применяться виджет. Если оставить пустым (не указаывать), то виджет будет применён абсолютно ко всем документам. {integer; ''}

Пример:
mm_ddFillMenuindex();

Синтаксис: mm_widget_accessdenied($ids, $default, $roles)
Описание параметров: Например, в родительском документе вызвыается сниппет «Ditto», и вы не хотите, чтобы пользователи редактировали этот документ, но хотите, чтобы пользователи могли создавать и редактировать дочерние документы. Используйте этот виджет с осторожностью, т.к. он не обеспечивает такой защиты, как встроенная система прав MODx. Пользователь, обладающий техническими знаниями может обойти эту защиту через инструменты для разработки в браузере.
НазваниеОписаниеДопустимые значенияЗначение по умолчанию
ids * Список документов, к которым необходимо запретить доступ. {comma separated string}
default Сообщение о запрете доступа (разрешён HTML). {string} 'Access denied - Access to current document closed for security reasons.'
roles Роли, для которых необходимо применить виждет, пустое значение — все роли. {comma separated string}

Пример: Запретить доступ к документам с id = 1 и 15 пользователям с id роли = 2 и отобразить произвольное сообщение о запрете доступа
mm_widget_accessdenied('1,15', 'Этот документ запрещено редактировать. Давай, до свидания!' '2');

Синтаксис: mm_ddHTMLCleaner($fields, $roles, $templates, $validAttrsForAllTags, $validStyles, $validAttrs)
Описание параметров:
НазваниеОписаниеДопустимые значенияЗначение по умолчанию
fields * Поля документа (или TV), для которых необходимо применить виджет. {comma separated string}
roles Роли, для которых необходимо применить виждет, пустое значение — все роли. {comma separated string}
templates Id шаблонов, для которых необходимо применить виджет, пустое значение — все шаблоны. {comma separated string}
validAttrsForAllTags Разрешённые атрибуты для для всех тегов (атрибуты, которые не нужно удалять, остальные удалятся). {comma separated string} 'title,class'
validStyles Разрешённые стили для всех тегов (стили, которые не нужно удалять из атрибута «style»). {comma separated string} 'word-spacing'
validAttrs Разрешённые атрибуты для тегов (они не будут удаляться). В качестве ключа используется имя тега, в качестве значения — разрешённые атрибуты (строка, разделённая через запятую). {string: JSON} '{"img":"src,alt,width,height","a":"href,target"}'

Пример:
mm_ddHTMLCleaner();

Примеры

С помощью ManagerManager вы можете изменять внешний вид страницы редактирования ресурса. Вы можете менять заголовки параметров ресурса, добавлять новые вкладки, скрывать секции и многое другое. Также вы можете расширять возможности ManagerManager добавляя свои собственные виджеты. ManagerManager работает исполняя правила, которые применяются к определённым областям страницы редактирования ресурса. Каждое правило может быть применено к определенной роли, определенному шаблону или любой их комбинации.

Для переименования параметра "Заголовок ресурса" для всех шаблонов и всех пользователей, вы можете использовать:

mm_renameField('pagetitle', 'Новый текст заголовка');

просто поместите это правило в чанк mm_demo_rules (или другой чанк, указанный в конфигурации плагина).

Вы можете применять правило для пользователей с конкретной ролью, указав третий параметр, который является идентификатором одной или нескольких ролей пользователей. Идентификатор роли вы можете найти на вкладке "Роли".

Чтобы применить приведенное выше правило только к роли с идентификатором "1", вы должны написать:

mm_renameField('pagetitle', 'Новый текст заголовка', '1');

Вы можете добавить несколько ролей, через запятую:

mm_renameField('pagetitle', 'Новый текст заголовка', '1,3,5');

Если вы хотите сделать правило "для всех кроме",то вы должны поставить перед списком ролей восклицательный знак "!". Например, чтобы применить правило для всех, кроме администраторов(идентификатор роли администратора "1"), вы должны написать:

mm_renameField('pagetitle', 'Новый текст заголовка', '!1');

Примечание: исключение применяется ко всем ролям.

mm_renameField('pagetitle', 'Новый текст заголовка', '!2,3');

Добавит правило к пользователям не входящим в роли с идентификаторами 2 или 3.

Наконец, если вы оставите параметр с идентификаторами ролей пустым, или пропустить его, правило будет применяться ко всем ролям.

Можно уточнять правила, ограничивая их применение для шаблонов с определенным идентификатором. Например:

mm_renameField('pagetitle', 'Новый текст заголовка', '', '3');

Добавит правило только к ресурсам использующим шаблон с идентификатором "3".

mm_renameField('pagetitle', 'Новый текст заголовка', '!1', '3');

Добавит правило к пользователям которые не принадлежат к роли с идентификатором "1", когда они редактируют ресурс использующий шаблон с идентификатором "3".

Вы можете использовать переменные PHP. Например, для сохранения идентификаторов шаблона и роли.

    $news_role = '3';
    $news_tpl = '10';
    mm_createTab('SEO','seoTab', '', $news_tpl, '', '600');
    mm_renameField('longtitle','Заголовок статьи', $news_role, $news_tpl, 'Это заголовок статьи');

Вы можете применять правило к ресурсам с определённым идентификатором.

    // скроет поле ресурса, если идентификатор родителя этого ресурса "28".
    if($content['parent'] == 28){
    mm_hideFields('tvname','2');
    }

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

Модуль 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`
]]

Поделитесь ссылкой

Статистика

Яндекс цитирования
© 2011 - 2023 Школа MODX
Напишите нам в Telegram