Поля для формы появились в Joomla начиная с версии 1.6. Они служат для того что бы удобно и гибко создавать любое поле для HTML формы в не зависимости от того где эти поля будут размешены, будь то компоененты, модули или плагины.

Что бы создать произвольное поле достаточно в секцию в файле XML манифеста вписать следующий код:

<field 
	name="field_name" 
	type="field_type" 
	label="field_label" 
	description="field_description" />

Где field_name - имя поля по которому можно обратится к нему из приложения для получения значения
field_type - тип поля, например текстовое поле
field_abel - название поля
field_description - описание поля которое появляется при наведении на "Название поля"

Список общих полей которые могут использоваться при любом создании элементов формы для Joomla:

полезначение
type (Обязательное) Тип поля
name (Обязательное) уникальное имя этого поля
label (Обязательное) название поля
default (Не обязательное) Значение по умолчанию для этого поля
description (Не обязательное) Текстовая подсказка которая появляется при наведение на название поля
readonly (Не обязательное) устанавливает поле в режим только для чтения
disabled (Не обязательное) Отключено
class (Обязательное) имя CSS класса для текстового поля


В модулях и плагинах достаточно в XML файле манифеста (он же установочный файл) добавить секцию <config></config> в секцию <extension></extension>

Для модуля конфигурация будет выглядеть следующим образом: 

<config>

	<fields name="params">
	
		<fieldset name="basic">
		
		</fieldset>
		
		<fieldset name="advanced">
		
			<field 	name="layout" 
					type="modulelayout" 
					label="JFIELD_ALT_LAYOUT_LABEL"
					description="JFIELD_ALT_MODULE_LAYOUT_DESC"/>
					
			<field 	name="moduleclass_sfx" 
					type="text" 
					label="COM_MODULES_FIELD_MODULECLASS_SFX_LABEL"
					description="COM_MODULES_FIELD_MODULECLASS_SFX_DESC"/>
					
			<field 	name="cache" 
					type="list" 
					label="COM_MODULES_FIELD_CACHING_LABEL"
					description="COM_MODULES_FIELD_CACHING_DESC" 
					default="1">
					<option value="0">COM_MODULES_FIELD_VALUE_NOCACHING</option>
					<option value="1">JGLOBAL_USE_GLOBAL</option>
			</field>
			
		</fieldset>
		
	</fields>
	
</config>

После создании данной секции в XML Файле манифеста в администрировании модуля у нас появится такие блоки:
module setup для размещения полей в блоке "Основные параметры" нужно добавлять поля в секцию <fieldset name="basic"></fieldset>.
Блок "Дополнительные параметры" находится в секции <fieldset name="advanced"></fieldset> в этом блоке уже опеределены три стандартных поля для работы с модулем

Для добавления конфигурации для плагина также нужно в XML файле манифеста создать секцию <config></config>
В которой будет точно такой же код как и в модуле, только не нужно вставлять секцию <fieldset name="advanced"></fieldset> и у нас появится точно такой же блок "Основные параметры" в котором через XML файл манифеста можно создать любое количество произвольных полей

Для административной части нужно создавать файл config.xml в administrator/components/com_mycomponent/. В этот файл вставляется отдельно секция <config></config> которая является родительской, внутри она ничем не отличается от той что создается в XML файле манифеста для модуля, но как и для плагина не нужно все что в секции advanced модуля

Для того что бы работать с настройками модуля надо дописать в любом виде код:

JToolBarHelper::preferences( 'com_mycomponetn' );

После чего появится кнопка "Настройки" нажав на которую появится окно настроек для компонента

Полный список всех типов полей и характерных для них параметров можно посмотреть тут.

XML параметры расширений

Xml параметры для расширений, компонентов, модулей, плагинов, шаблонов и меню. Compat icon 1 6 Compat icon 2 5 Compat icon 3 0 Compat icon 3 1 Compat icon 3 2 Compat icon 3 6  Эти параметры можно применить для создания компонента, модуля, плагина. Этих параметров может быть очень много, для разных целей и некоторые из них могут влиять на статические данные такие как ссылка, alias. И на кажущуюся простоту в параметрах xml кроется очень много возможностей. Не думайте что это просто, на самом деле эта обширная тема где много подводных камней!

Что такое xml параметры

Это набор данных которые можно задать при настройке расширения. Когда вы устанавливаете компонент или модуль, (чаще всего параметры есть в плагинах и модулях) в нём как правило уже есть некий набор данных для работы расширения. После чего когда расширение включено при его загрузке с сайтом берутся эти самые параметры для определения действий. Xml параметры хранятся в бд причём в 2 разных таблицах, помимо своих собственных для компонента, одна таблица _extensions хранит настройки расширений таких как шаблон, модуль и.т.д, а в _menu хранится как бы сказать настройки для компонентов, ссылок и только для них, для плагинов и модулей тут не предусмотрено действий. И _menu может влиять на формирование ссылки в зависимости от потребностей, скажем вы создаёте ссылку она выглядит так (index.php?option=com_content&view=article) и при выборе параметра к какой категории принадлежит добавляется к ссылке (&id=84) и таким образом ссылка имеет вид (index.php?option=com_content&view=article&id=84).

Типы xml полей и их параметры

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

ТипОписаниеДоступно для
accessiblemedia предоставляет модальный доступ к медиа-менеджеру для вставки изображений с загрузкой для пользователей с соответствующими правами и текстовым полем для добавления альтернативного текста. И выше
accesslevel обеспечивает выпадающий список просмотра уровней доступа. Compat icon 1 6 И выше
cachehandler предоставляет список доступных вариантов обработки кэша. Compat icon 1 6 И выше
calendar предоставляет текстовое поле для ввода даты. Значок рядом с текстовым полем содержит ссылку на всплывающий календарь, который также может быть использован для ввода значения даты. Compat icon 1 6 И выше
captcha обеспечивает вставку капчи Compat icon 2 5И выше
category обеспечивает выпадающий список категорий для расширения. Compat icon 1 6 И выше
checkbox обеспечивает единое поле, чтобы выбрать зарегистрированный или незарегистрированный Compat icon 1 6 И выше
checkboxes предоставляет неограниченные флажки, которые могут быть использованы для множественного выбора. Compat icon 1 6 И выше
ChromeStyle предоставляет список параметров стиля шаблона, сгруппированных по шаблону. Compat icon 3 0 И выше
color обеспечивает палитру цветов, при нажатии кнопки в поле ввода. Compat icon 2 5 И выше
ContentLanguage предоставляет список установленных языков контента для использования в сочетании с плагином язык коммутатора. Compat icon 2 5 И выше
ContentType Содержит список типов контента. Compat icon 3 1 И выше
combo обеспечивает поле комбинированного окна. Compat icon 2 5 И выше
componentlayout предоставляет сгруппированный перечень основных и альтернативных макетов шаблонов для компонента. Compat icon 1 6 И выше
DatabaseConnection Предоставляет список доступных подключений к базе данных, возможно ограничение в данном списке. Compat icon 2 5 И выше
editor Поле редактора Compat icon 1 6 И выше
editors выпадающий список доступных редакторов WYSIWYG. С Compat icon 2 5 вместо него используется поле plugins. Compat icon 1 6 И выше
email обеспечивает поле электронной почты. Compat icon 2 5 И выше
file  Поле загрузки файла Compat icon 1 6 И выше
filelist предоставляет выпадающий список файлов из указанного каталога. Compat icon 1 6 И выше
folderlist обеспечивает выпадающий список папок из указанного каталога. Compat icon 1 6 И выше
groupedlist предоставляет выпадающий список элементов, организованных в группы. Compat icon 1 6 И выше
header tag обеспечивает выпадающего списка тегов заголовков (H1-h6). Compat icon 3 0 И выше
helpsite обеспечивает выпадающий список с помощью сайтов для вашей установки. Compat icon 1 6 И выше
hidden обеспечивает скрытое поле для сохранения формы поле, значение которого не может быть изменено непосредственно пользователем,  Администратором (оно может быть изменено в коде или путем редактирования файла params.ini). Compat icon 1 6 И выше
imagelist предоставляет выпадающий список файлов, изображений в указанный каталог. Compat icon 1 6 И выше
integer обеспечивает выпадающий список целых чисел между минимумом и максимумом. Compat icon 1 6 И выше
language обеспечивает выпадающий список установленных языков для переднего плана или Backend. Compat icon 1 6 И выше
list обеспечивает выпадающий список определенных пользователем записей. Compat icon 1 6 И выше
media предоставляет доступ к модальному Медиа-Менеджеру для вставки изображений с загрузкой. Compat icon 1 6 И выше
menu обеспечивает выпадающий список доступных меню с вашего Joomla сайта. Compat icon 1 6 И выше
menuitem обеспечивает выпадающий список доступных пунктов меню с вашего Joomla сайта. Compat icon 1 6 И выше
meter Обеспечивает полунок, чтобы показать значение в диапазоне. Compat icon 3 2 И выше
modulelayout предоставляет список альтернативных раскладок клавиатуры для модулей, сгруппированных по основным шаблонам. Compat icon 1 6 И выше
ModuleOrder Обеспечивает выпадающий список, чтобы установить порядок модуля в данной позиции Compat icon 2 5 И выше
ModulePosition Обеспечивает ввод текста, чтобы установить позицию модуля. Compat icon 2 5 И выше
ModuleTag Предоставляет список элементов html5 (используется, чтобы обернуть модуль в них). Compat icon 3 0 И выше
note Поддерживает текстовое поле с описанием. Compat icon 2 5 И выше
number Предоставляет однострочное текстовое поле  с кнопками вверх-вниз , чтобы установить номер в поле. Compat icon 3 2 И выше
password предоставляет текстовое поле для ввода пароля. Символы пароля будет закрыты. Compat icon 1 6 И выше
plugins предоставляет список плагинов из данной папки. Compat icon 2 5 И выше
predefinedlist используется для загрузки списка предопределенных значений. Compat icon 3 2 И выше
radio предоставляет переключатели для выбора различных вариантов. Compat icon 1 6 И выше
range Обеспечивает горизонтальную полосу прокрутки для указания значения в диапазоне. Compat icon 3 2 И выше
repeatable Позволяет поля формы, которые могут иметь столько вариантов, как пользователь желает. Compat icon 3 2 И выше
rules обеспечивает матрицу группы опциями действий для управления контролем доступа. Отображение зависит от контекста. Compat icon 2 5 И выше
sessionhandler обеспечивает выпадающего списка опций обработчика сеанса. Compat icon 2 5 И выше
spacer обеспечивает визуальный разделитель между полями формы. Это чисто визуальная помощь и значение не сохраняется. Compat icon 2 5 И выше
sql обеспечивает выпадающий список записей, получить, выполнив запрос к базе данных Joomla. Сделать запрос к одной таблице и сравнить с другой, получив тем самым запись. Скажем к какой категории принадлежит меню. Compat icon 1 6 И выше
subform дает возможность использовать XML-формы внутри друг друга или использовать существующие формы внутри вашей текущей формы. Compat icon 3 6 И выше
tag предоставляет точку входа для тегов (либо AJAX или вложенными). Compat icon 3 1 И выше
tel обеспечивает поле ввода для номера телефона. Compat icon 2 5 И выше
templatestyle обеспечивает выпадающего списка стилей шаблона. Compat icon 2 5 И выше
text предоставляет текстовое поле для ввода данных. Compat icon 1 6 И выше
textarea предоставляет текстовое поле для ввода многострочного текста Compat icon 1 6 И выше
timezone обеспечивает выпадающий список часовых поясов. Compat icon 1 6 И выше
URL предоставляет текстовое поле URL. Compat icon 2 5 И выше
user предоставляет модальный список пользователей. Compat icon 1 6 И выше
useractive Поле, показывающее список доступных активнных пользователей Compat icon 3 2 И выше
usergroup обеспечивает выпадающий список групп пользователей. Начиная с Compat icon 3 2использовать usergrouplist Compat icon 1 6 И выше
usergrouplist Поле для загрузки выпадающего списка доступных групп пользователей. Заменяет тип поля формы usergroup. Compat icon 3 2 И выше
userstate Поле для загрузки списка доступных статусов пользователей. Compat icon 3 2 И выше


Так же для каждого из полей существуют параметры такие как:

  1. type - тип пункта меню к примеру text.
  2. name - имя типа пункта меню, при записи в бд, имя пункта меню должно быть одинаковым в таблице.
  3. label - название поля.
  4. default - значение по умолчанию.
  5. description - описание, подсказка. Всплывающая подсказка поля при наведении мышкой.
  6. class — имя CSS класса, которое будет использоваться при выводе поля в html-код. По умолчанию «inputbox».
  7. size - размер поля.
  8. key_field - (опционально) это название столбца, который будет содержать значения для этого параметра. Если опущен, то столбец "значение" будет использоваться.
  9. value_field - Имя столбца, который будет содержать значения, которые будут показаны пользователю в выпадающем списке. Если опущен, то столбец с таким же именем, как имя атрибута будет использоваться, если оно существует.
  10. readonly - (опционально), является ли текстовое поле только для чтения (истинное или ложное). Если текстовое поле только для чтения, дата не может быть изменена, но можно выбрать и скопировать.
  11. disabled - (опционально), является ли текстовое поле отключенным (истинное или ложное).
  12. format - (приобретается дополнительно) формат даты, которые будут использоваться. Это формат, используемый в PHP, чтобы указать формат даты строки (см. ниже). Если формат не аргумент, '% Y-% M-% D' предполагается (с указанием дат, как '20013-03-27 ').
  13. filter - (необязательно) филтр для содержимого.
  14. extension - расширение (обязательное) является имя расширения, для которых категории будут восстановлены. Например, к списку категорий контента, используйте 'com_content' значение.
  15. scope - (необязательно) является псевдонимом для расширения.
  16. show_root -  (необязательно), является ли выбор представляющий корневой путь.
  17. (необязательно) (истина / ложь), является ли падение вниз будет показывать только опубликованные и неопубликованные категорий.
  18. published - (необязательно) (истина / ложь), будет показывать только опубликованные и неопубликованные категории.
  19. value - (необязательно): значение параметра, если этот флажок установлен (обычно 1).
  20. view - (обязательно) это имя меню, для которых будут получены макеты (например, «статья»).
  21. useglobal
  22. width - (опционально) определяет ширину (в пикселях).
  23. height - (опционально) определяет высоту (в пикселях).
  24. cols - (опционально) определяет ширину редактор (в столбцах).
  25. rows - (необязательно) определяет высоту редактор (в строках).
  26. buttons - (опция) может быть массивом. Плагин кнопки, ложь или истина.
  27. hidden - (опционально) скрыть кнопки.
  28. editor - определяет редактор, который будет использоваться, и может включать в себя два варианта (editor="desired|alternative")
  29. filter - (опция) позволяет системе сохранять определенные HTML-теги и исходные данные.
  30. accept - (опционально) Сообщает браузеру, какой MIME тип формы использовать.
  31. onchange - (опционально) HTML эквивалентных атрибутов.
  32. required - (опционально) для Joomla. Форма проверки на заполненность.
  33. validate - проверка поля в соответствии с joomla
  34. onchange - (опционально) HTML эквивалентных атрибутов (наличие использования).
  35. directory - это файловая система, путь к каталогу.
  36. exclude - используется для исключения файлов из списка.
  37. stripext - (опционально) является логическим аргументом. Если это правда, то расширение имен файлов будут вырезаны из имен файлов в списке.
  38. hide_none - (опционально) является логическим аргументом. Если это правда, '- не использовать - "пункт исключается из раскрывающегося списка.
  39. hide_default (опционально) является логическим аргументом. Если это правда, "- Использовать по умолчанию -" пункт исключается из раскрывающегося списка.
  40. multiple - возможность выбрать несколько элементов.
  41. first - (обязательно) это значение является самым меньшим в списке.
  42. last - (обязательно) это значение является самым высоким в списке.
  43. step - (обязательно) этот параметр увеличивает предыдущее значение на указанное. К примеру 1: 1,2,3,4,5,6,7,8,9,10 и 2:1,3,5,7,9.
  44. client - (обязательный) применение каких установленных языков будут перечислены, административных или для части сайта.
  45. preview - показывает или скрывает предварительный просмотр текущего выбранного изображения.
  46. query - (обязательно) SQL запрос, который будет предоставлять данные для раскрывающегося списка. Запрос должен возвращать два столбца: один называется «значение» (если переопределен key_field атрибут), который будет содержать значения элементов списка, а другой называется так же, как значение имени атрибута (если переопределен value_field атрибут) содержащий текст, который будет показан в выпадающем списке.
  47. maxlength - (опционально) ограничивает число символов, которые могут быть введены.

Главное запомните что эти поля могут либо записываться в собственную таблицу расширения или же в таблицы меню и расширения, в виде параметров! Параметр field начал действовать с версии 1.6 и выше, а params был доступен для версии 1.5

Куда и как добавить параметры для расширений и меню

Для компонентов при создании меню. Для части сайта в компоненте есть вид шаблон, в котором выводятся данные. К примеру views/pageone и views/pagetwo и скажем в виде views/pageone/tmpl/default.xml заносятся данные.
 

<?xml version="1.0" encoding="utf-8"?>
 <metadata>
	 <layout title="COM_PRICELEAFSHOP_CATIGORIES">
		<message>COM_PRICELEAFSHOP_CATIGORIES</message>
	 </layout>
	 
	 <fields name="request">
		 <fieldset name="request">
			 <field 
				 name="id" 
				 type="sql" 
				 default="1" 
				 label="COM_PRICELEAFSHOP_MENU_SUPPORT_MENU" 
				 query="SELECT t1.id, t2.name_cat FROM #__priceleafshop_cat AS t1 LEFT JOIN #__priceleafshop_cat AS t2 ON t2.id=t1.id" 
				 key_field="id" 
				 value_field="name_cat"
				 description="COM_PRICELEAFSHOP_MENU_SUPPORT" />
		 </fieldset> 
	 </fields>
	 
	 <fields name="params">
		 <fieldset name="basic" label="JGLOBAL_CATEGORY_OPTIONS">
			 <field 
				 name="id" 
				 type="sql" 
				 default="1" 
				 label="COM_PRICELEAFSHOP_MENU_SUPPORT_MENU" 
				 query="SELECT t1.id, t2.name_cat FROM #__priceleafshop_cat AS t1 LEFT JOIN #__priceleafshop_cat AS t2 ON t2.id=t1.id" 
				 key_field="id" 
				 value_field="name_cat"
				 description="COM_PRICELEAFSHOP_MENU_SUPPORT" />
		 </fieldset> 
	 </fields>
 
 </metadata>

Первый вариант заносит данные в таблицу _menu, которые потом можно вытащить через

 $menuitemid = JRequest::getInt( 'Itemid' );
 $menu = JSite::getMenu();
 $id = $menu->getParams( $menuitemid )->get('id');

Второй вариант, добавляет данные к ссылке и всё это из за разных параметров request и params.

Настройки компонента. Заносятся через config.xml который находится в корне папки компонента административной части.

JToolbarHelper::preferences('com_content');

Но параметры xml немного другие чем в меню.  


//Пример
 
 <?xml version="1.0" encoding="utf-8"?>
 <config>
	 <fieldset
		name="articles"
		label="JGLOBAL_ARTICLES"
		description="COM_CONTENT_CONFIG_ARTICLE_SETTINGS_DESC">
		
		<field
			name="show_noauth"
			type="radio"
			class="btn-group"
			default="0"
			label="JGLOBAL_SHOW_UNAUTH_LINKS_LABEL"
			description="JGLOBAL_SHOW_UNAUTH_LINKS_DESC">
				<option value="0">JNO</option>
				<option value="1">JYES</option>
		</field>
		<field
			name="urls_position"
			type="radio"
			default="0"
			label="COM_CONTENT_FIELD_URLSPOSITION_LABEL"
			description="COM_CONTENT_FIELD_URLSPOSITION_DESC">
				<option value="0">COM_CONTENT_FIELD_OPTION_ABOVE</option>
				<option value="1">COM_CONTENT_FIELD_OPTION_BELOW</option>
		</field>
	 </fieldset>
 </config>

Параметры для модулей, плагинов и шаблонов. Ни чем не отличаются от компонентов, только xml для меню имеет отличия и вызываются параметры в коде у всех одинаково кроме xml для меню. Что бы получить параметр для меню пишется в шаблоне следующий код:  

// Параметры для вывода данных из меню.
$menuitemid = JRequest::getInt( 'Itemid' );
$menu = JSite::getMenu();
$id = $menu->getParams( $menuitemid )->get('id');
// Где id является названием поля, не путать с названием переменной.

А для расширений такой код:

$bottomten=$this->params->def('bottomten', '');
//Где bottomten является названием поля, не путать с названием переменной.

Если вам не понятна структура или вам тяжело её представить то посмотрите структуру в родных компонентах, модулях, плагинах joomla. Вот уже с этой схемой можно легко сделать настройки для своего расширения, в начале представлены ссылки в которых описано как занести xml настройки для плагина и модуля. Родные возможности xml параметров joomla делают работу проще так как ненужно самому описывать некоторые функции. Изучение этого материала существенно увеличит возможности вашего расширения.

Оригинал.

Compat icon 3 2 И выше