Поля формы и файлы конфигураций, XML параметры расширений.
Поля для формы появились в 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 Файле манифеста в администрировании модуля у нас появится такие блоки:
для размещения полей в блоке "Основные параметры" нужно добавлять поля в секцию <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 параметры для расширений, компонентов, модулей, плагинов, шаблонов и меню.
Эти параметры можно применить для создания компонента, модуля, плагина. Этих параметров может быть очень много, для разных целей и некоторые из них могут влиять на статические данные такие как ссылка, 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 | обеспечивает выпадающий список просмотра уровней доступа. | ![]() |
cachehandler | предоставляет список доступных вариантов обработки кэша. | ![]() |
calendar | предоставляет текстовое поле для ввода даты. Значок рядом с текстовым полем содержит ссылку на всплывающий календарь, который также может быть использован для ввода значения даты. | ![]() |
captcha | обеспечивает вставку капчи | ![]() |
category | обеспечивает выпадающий список категорий для расширения. | ![]() |
checkbox | обеспечивает единое поле, чтобы выбрать зарегистрированный или незарегистрированный | ![]() |
checkboxes | предоставляет неограниченные флажки, которые могут быть использованы для множественного выбора. | ![]() |
ChromeStyle | предоставляет список параметров стиля шаблона, сгруппированных по шаблону. | ![]() |
color | обеспечивает палитру цветов, при нажатии кнопки в поле ввода. | ![]() |
ContentLanguage | предоставляет список установленных языков контента для использования в сочетании с плагином язык коммутатора. | ![]() |
ContentType | Содержит список типов контента. | ![]() |
combo | обеспечивает поле комбинированного окна. | ![]() |
componentlayout | предоставляет сгруппированный перечень основных и альтернативных макетов шаблонов для компонента. | ![]() |
DatabaseConnection | Предоставляет список доступных подключений к базе данных, возможно ограничение в данном списке. | ![]() |
editor | Поле редактора | ![]() |
editors | выпадающий список доступных редакторов WYSIWYG. С ![]() |
![]() |
обеспечивает поле электронной почты. | ![]() |
|
file | Поле загрузки файла | ![]() |
filelist | предоставляет выпадающий список файлов из указанного каталога. | ![]() |
folderlist | обеспечивает выпадающий список папок из указанного каталога. | ![]() |
groupedlist | предоставляет выпадающий список элементов, организованных в группы. | ![]() |
header tag | обеспечивает выпадающего списка тегов заголовков (H1-h6). | ![]() |
helpsite | обеспечивает выпадающий список с помощью сайтов для вашей установки. | ![]() |
hidden | обеспечивает скрытое поле для сохранения формы поле, значение которого не может быть изменено непосредственно пользователем, Администратором (оно может быть изменено в коде или путем редактирования файла params.ini). | ![]() |
imagelist | предоставляет выпадающий список файлов, изображений в указанный каталог. | ![]() |
integer | обеспечивает выпадающий список целых чисел между минимумом и максимумом. | ![]() |
language | обеспечивает выпадающий список установленных языков для переднего плана или Backend. | ![]() |
list | обеспечивает выпадающий список определенных пользователем записей. | ![]() |
media | предоставляет доступ к модальному Медиа-Менеджеру для вставки изображений с загрузкой. | ![]() |
menu | обеспечивает выпадающий список доступных меню с вашего Joomla сайта. | ![]() |
menuitem | обеспечивает выпадающий список доступных пунктов меню с вашего Joomla сайта. | ![]() |
meter | Обеспечивает полунок, чтобы показать значение в диапазоне. | ![]() |
modulelayout | предоставляет список альтернативных раскладок клавиатуры для модулей, сгруппированных по основным шаблонам. | ![]() |
ModuleOrder | Обеспечивает выпадающий список, чтобы установить порядок модуля в данной позиции | ![]() |
ModulePosition | Обеспечивает ввод текста, чтобы установить позицию модуля. | ![]() |
ModuleTag | Предоставляет список элементов html5 (используется, чтобы обернуть модуль в них). | ![]() |
note | Поддерживает текстовое поле с описанием. | ![]() |
number | Предоставляет однострочное текстовое поле с кнопками вверх-вниз , чтобы установить номер в поле. | ![]() |
password | предоставляет текстовое поле для ввода пароля. Символы пароля будет закрыты. | ![]() |
plugins | предоставляет список плагинов из данной папки. | ![]() |
predefinedlist | используется для загрузки списка предопределенных значений. | ![]() |
radio | предоставляет переключатели для выбора различных вариантов. | ![]() |
range | Обеспечивает горизонтальную полосу прокрутки для указания значения в диапазоне. | ![]() |
repeatable | Позволяет поля формы, которые могут иметь столько вариантов, как пользователь желает. | ![]() |
rules | обеспечивает матрицу группы опциями действий для управления контролем доступа. Отображение зависит от контекста. | ![]() |
sessionhandler | обеспечивает выпадающего списка опций обработчика сеанса. | ![]() |
spacer | обеспечивает визуальный разделитель между полями формы. Это чисто визуальная помощь и значение не сохраняется. | ![]() |
sql | обеспечивает выпадающий список записей, получить, выполнив запрос к базе данных Joomla. Сделать запрос к одной таблице и сравнить с другой, получив тем самым запись. Скажем к какой категории принадлежит меню. | ![]() |
subform | дает возможность использовать XML-формы внутри друг друга или использовать существующие формы внутри вашей текущей формы. | ![]() |
tag | предоставляет точку входа для тегов (либо AJAX или вложенными). | ![]() |
tel | обеспечивает поле ввода для номера телефона. | ![]() |
templatestyle | обеспечивает выпадающего списка стилей шаблона. | ![]() |
text | предоставляет текстовое поле для ввода данных. | ![]() |
textarea | предоставляет текстовое поле для ввода многострочного текста | ![]() |
timezone | обеспечивает выпадающий список часовых поясов. | ![]() |
URL | предоставляет текстовое поле URL. | ![]() |
user | предоставляет модальный список пользователей. | ![]() |
useractive | Поле, показывающее список доступных активнных пользователей | ![]() |
usergroup | обеспечивает выпадающий список групп пользователей. Начиная с ![]() |
![]() |
usergrouplist | Поле для загрузки выпадающего списка доступных групп пользователей. Заменяет тип поля формы usergroup. | ![]() |
userstate | Поле для загрузки списка доступных статусов пользователей. | ![]() |
Так же для каждого из полей существуют параметры такие как:
- type - тип пункта меню к примеру text.
- name - имя типа пункта меню, при записи в бд, имя пункта меню должно быть одинаковым в таблице.
- label - название поля.
- default - значение по умолчанию.
- description - описание, подсказка. Всплывающая подсказка поля при наведении мышкой.
- class — имя CSS класса, которое будет использоваться при выводе поля в html-код. По умолчанию «inputbox».
- size - размер поля.
- key_field - (опционально) это название столбца, который будет содержать значения для этого параметра. Если опущен, то столбец "значение" будет использоваться.
- value_field - Имя столбца, который будет содержать значения, которые будут показаны пользователю в выпадающем списке. Если опущен, то столбец с таким же именем, как имя атрибута будет использоваться, если оно существует.
- readonly - (опционально), является ли текстовое поле только для чтения (истинное или ложное). Если текстовое поле только для чтения, дата не может быть изменена, но можно выбрать и скопировать.
- disabled - (опционально), является ли текстовое поле отключенным (истинное или ложное).
- format - (приобретается дополнительно) формат даты, которые будут использоваться. Это формат, используемый в PHP, чтобы указать формат даты строки (см. ниже). Если формат не аргумент, '% Y-% M-% D' предполагается (с указанием дат, как '20013-03-27 ').
- filter - (необязательно) филтр для содержимого.
- extension - расширение (обязательное) является имя расширения, для которых категории будут восстановлены. Например, к списку категорий контента, используйте 'com_content' значение.
- scope - (необязательно) является псевдонимом для расширения.
- show_root - (необязательно), является ли выбор представляющий корневой путь.
- (необязательно) (истина / ложь), является ли падение вниз будет показывать только опубликованные и неопубликованные категорий.
- published - (необязательно) (истина / ложь), будет показывать только опубликованные и неопубликованные категории.
- value - (необязательно): значение параметра, если этот флажок установлен (обычно 1).
- view - (обязательно) это имя меню, для которых будут получены макеты (например, «статья»).
- useglobal
- width - (опционально) определяет ширину (в пикселях).
- height - (опционально) определяет высоту (в пикселях).
- cols - (опционально) определяет ширину редактор (в столбцах).
- rows - (необязательно) определяет высоту редактор (в строках).
- buttons - (опция) может быть массивом. Плагин кнопки, ложь или истина.
- hidden - (опционально) скрыть кнопки.
- editor - определяет редактор, который будет использоваться, и может включать в себя два варианта (editor="desired|alternative")
- filter - (опция) позволяет системе сохранять определенные HTML-теги и исходные данные.
- accept - (опционально) Сообщает браузеру, какой MIME тип формы использовать.
- onchange - (опционально) HTML эквивалентных атрибутов.
- required - (опционально) для Joomla. Форма проверки на заполненность.
- validate - проверка поля в соответствии с joomla
- onchange - (опционально) HTML эквивалентных атрибутов (наличие использования).
- directory - это файловая система, путь к каталогу.
- exclude - используется для исключения файлов из списка.
- stripext - (опционально) является логическим аргументом. Если это правда, то расширение имен файлов будут вырезаны из имен файлов в списке.
- hide_none - (опционально) является логическим аргументом. Если это правда, '- не использовать - "пункт исключается из раскрывающегося списка.
- hide_default (опционально) является логическим аргументом. Если это правда, "- Использовать по умолчанию -" пункт исключается из раскрывающегося списка.
- multiple - возможность выбрать несколько элементов.
- first - (обязательно) это значение является самым меньшим в списке.
- last - (обязательно) это значение является самым высоким в списке.
- step - (обязательно) этот параметр увеличивает предыдущее значение на указанное. К примеру 1: 1,2,3,4,5,6,7,8,9,10 и 2:1,3,5,7,9.
- client - (обязательный) применение каких установленных языков будут перечислены, административных или для части сайта.
- preview - показывает или скрывает предварительный просмотр текущего выбранного изображения.
- query - (обязательно) SQL запрос, который будет предоставлять данные для раскрывающегося списка. Запрос должен возвращать два столбца: один называется «значение» (если переопределен key_field атрибут), который будет содержать значения элементов списка, а другой называется так же, как значение имени атрибута (если переопределен value_field атрибут) содержащий текст, который будет показан в выпадающем списке.
- 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 делают работу проще так как ненужно самому описывать некоторые функции. Изучение этого материала существенно увеличит возможности вашего расширения.
![]() |