[EVO] templatesEdit2 — плагин для изменения вида документов в админ панели MODX
Последняя версия на GitHub
UPD: 29.12.2015
1. Изменения в функции показа картинок.
2. Нововведение. Для полей TV с типом Text и Number, теперь при заполнении возможных значений, они показываются подсказками при вводе данных полей в админке.
3. Добавленно в конфигурацию плагина, Исключить TV из категорий (id категорий, из которых не будут показываться тв-параметры). По умолчанию все параметры не попавшие на другие вкладки - выводятся на вкладке Основные [General] Сделано для того, чтобы можно было самостоятельно выводить параметры не назначая их по отдельности, а присваивать целыми категориями сразу.
В созданном сниппет mutate_content_template_5 (то есть для шаблона с id = 5, в корне прилагается рабочий файл с проекта) создаём вкладку Props и Prices и в самом низу ставим запрос на получение параметров из определённых категорий и получаем, что тв параметры из категории 15 попадают на вкладку - Свойства, а из категории 16 на вклдаку - Цены
Пример листинга вывода шаблона:
$mutate_content = array( 'Props' => array( 'title' => 'Свойства', 'fields' => array() ), 'Prices' => array( 'title' => 'Цены', 'fields' => array() ), .......... ); $sql = $modx->db->query('SELECT id, name, category FROM modx_site_tmplvars WHERE category IN(15,16) ORDER BY category, rank ASC'); if($modx->db->getRecordCount($sql) > 0) { foreach($modx->db->makeArray($sql) as $v) { $mutate_content_tmp[$v['category']][$v['name']] = array(); } // находим параметры из категории 15 и выводим if(isset($mutate_content_tmp[15])) { $mutate_content['Props']['fields'] = array_merge($mutate_content['Props']['fields'], $mutate_content_tmp[15]); } // находим параметры из категории 16 и выводим if(isset($mutate_content_tmp[16])) { $mutate_content['Prices']['fields'] = array_merge($mutate_content['Prices']['fields'], $mutate_content_tmp[16]); } } return $mutate_content;
UPD: 7.11.2014
Возможность разделения полей hidemenu и menuindex, для вывода отдельно menuindex - использовать menusort
UPD: 7.11.2014
добавленна возможность показа TV с типом image
обязательно добавить в конфигурацию плагина - &showTvImage=Show TV image;list;yes,no;yes
[EVO] templatesEdit2 — плагин для изменения вида документов в админ панели MODX
Этот плагин упрощён по сравнению со своим старшим братом templatesEdit
Так же плагин полностью совместим со всеми используемыми модулями, снипетами и плагинами.
Удобство плагина в том, что достаточно скопировать код плагина на новый проект и получить такое же отображение вкладок и полей.
Для индивидуальной настройки вывода полей документа, требуются базовые знания программирования.
Установка плагина
Перед установкой желательно отключить плагин ManagerManager, если он используется для добавления и перемещения вкладок и полей при выводе документа в админке.
Перед установкой плагина проверяете наличие события OnDocFormTemplateRender, которое уже есть в последних сборках MODx by Dmi3yy, если нет такого то выполняете SQL запрос (в админке MODX: Интрументы > Резервное копирование > Восстановить > Выполнить произвольную команду SQL)
INSERT INTO modx_system_eventnames VALUES (NULL, 'OnDocFormTemplateRender', '1', 'Documents');
Создать новый плагин mutate_content_dynamic (код из файла mutate_content_dynamic.php), и поставить на событие OnDocFormTemplateRender
Внимание, обработка события OnDocFormTemplateRender - есть только в CUSTOM и DEV версиях MODX by Dmi3yy
Шаблон вывода полей документа, по умолчанию заложен в коде самого плагина, либо можно поставить свой, создав сниппет с названием mutate_content_template_default с кодом из файла mutate_content_template_default.php
Свои шаблоны вывода полей в админке
Если нужно изменить под каждый шаблон документа свой вывод полей,
для этого нужно создать новый сниппет с названием mutate_content_template_0 — где 0 это id шаблона (в данном случае это шаблон blank) и с кодом из файла mutate_content_template_0.php
Чтобы изменить вывод полей по умолчанию под себя, в коде плагина есть массив $mutate_content_fields, изменяя порядок элементов массива, можно менять вывод полей по умолчанию.
Добавление / перемещение TV параметров
В файле mutate_content_template_4.php пример расположения полей и вкладок для конкретного шаблона (в данном случае с ID 4) в котором TV парметры требуется перенести на другие вкладки либо поменять местами.
Элемент массива для вывода TV-параметра достаточно прост, в массив [fields] достаточно добавить название TV параметра. Пример листинга. Вкладка SEO с добавленными параметрами
'Seo' => array(
'title' => 'SEO',
'roles' => '',
'hide' => '',
'fields' => array(
'tv_pagetitle' => '', // ТВ мета заголовок
'tv_description' => '', // ТВ мета описание
'tv_keywords' => '', // ТВ мета ключевые слова
'alias' => array(
'field' => array(
'title' => 'URL'/*$_lang['resource_alias']*/,
'help' => $_lang['resource_alias_help'],
'roles' => '',
'hide' => ''
)
),
'menutitle' => array(
'field' => array(
'title' => $_lang['resource_opt_menu_title'],
'help' => $_lang['resource_opt_menu_title_help'],
'roles' => '',
'hide' => ''
)
),
'menuindex' => array(
'field' => array(
'title' => $_lang['resource_opt_menu_index'],
'help' => '',
'roles' => '',
'hide' => ''
)
)
)
),..........
Добавление разделителя для группировки полей на вкладке
Для вывода разделителя нужно добавить в массив [fields] сплитер с уникальным именем.
Листинг вкладки с разделителями приведён ниже
'Content' => array( 'title' => 'Описание', 'roles' => '', 'hide' => '', 'fields' => array( 'split_introtext' => array( 'split' => array( 'title' => 'Краткое описание', 'roles' => '', 'hide' => '' ) ), 'introtext' => array( 'field' => array( 'title' => ''/*$_lang['resource_summary']*/, 'help' => ''/*$_lang['resource_summary_help']*/, 'roles' => '', 'hide' => '' ) ), 'split_content' => array( 'split' => array( 'title' => 'Подробное описание', 'roles' => '', 'hide' => '' ) ), 'content' => array( 'field' => array( 'title' => $_lang['which_editor_title'], 'help' => '', 'roles' => '', 'hide' => '' ) ), 'richtext' => array( 'field' => array( 'title' => $_lang['resource_opt_richtext'], 'help' => $_lang['resource_opt_richtext_help'], 'roles' => '', 'hide' => '' ) ) ) ),................