Поля формы и файлы конфигураций, 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. С вместо него используется поле plugins. | И выше |
обеспечивает поле электронной почты. | И выше | |
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 | И выше |
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 делают работу проще так как ненужно самому описывать некоторые функции. Изучение этого материала существенно увеличит возможности вашего расширения.
И выше |