WEXAR

Последняя версия на 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' => ''
				)
			)		
		)
	),................