Картинки на можно посмотреть на нашем сайте
скопировать файл plugin.templatesedit.php в папку assets\plugins\templatesedit
создать плагин templatesEdit2 на событие OnDocFormTemplateRender с кодом
require_once MODX_BASE_PATH.'assets/plugins/templatesedit/plugin.templatesedit.php';
Доавить конфигурацию плагина
&showTvImage=Показывать картинки в TV;list;yes,no;yes &excludeTvCategory=Исключить TV из категорий;text;
Добавлена возможность подключать файлы шаблонов из папки configs
в папке с плагином нужно создать папку configs и в неё можно складывать все конфигурационные файлы
Код файлов следующий
<?php
global $_lang;
$mutate_content_fields = array(
....................
);
return $mutate_content_fields;
Изменение под EVO 1.3
Убран из массива menusort, заменён на menuindex
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;
Возможность разделения полей hidemenu и menuindex, для вывода отдельно menuindex - использовать menusort
добавленна возможность показа TV с типом image
обязательно добавить в конфигурацию плагина - &showTvImage=Show TV image;list;yes,no;yes
Этот плагин упрощён по сравнению со своим старшим братом templatesEdit
Так же плагин полностью совместим со всеми используемыми модулями, снипетами и плагинами.
Удобство плагина в том, что достаточно скопировать код плагина на новый проект и получить такое же отображение вкладок и полей.
Для индивидуальной настройки вывода полей документа, требуются базовые знания программирования.
Перед установкой желательно отключить плагин ManagerManager, если он используется для добавления и перемещения вкладок и полей при выводе документа в админке.
Перед установкой плагина проверяете наличие события OnDocFormTemplateRender, если нет такого то выполняете 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, изменяя порядок элементов массива, можно менять вывод полей по умолчанию.
В файле 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' => '' ) ) ) ),................