Стандартные типы xml полей в JOOMLA
Для всех типов полей существуют общие атрибуты:
| Атрибут | Описание |
|---|---|
| name | Название поля |
| type | Тип поля |
| label | Метка поля |
| description | Описание поля, появляется при наведении курсора на метку поля |
| class | Класс поля |
| default | Значение по умолчанию |
| Тип поля | Описание поля | Версия CMS |
|---|---|---|
| accesslevel | Вывод выпадающего списка для отображения уровней доступа | 2.5 и выше |
| cachehandler | Вывод списка доступных вариантов кеширования | 2.5 и выше |
| calendar | Выводит текстовое поле рядом с которым будет заначек календаря, при клике на поле или значение появляется всплывающее окно для выбора даты. | 2.5 и выше |
| category | Вывод списка категорий текущего компонента, категории должны заполняться из компонента com_categories | 2.5 и выше |
| checkbox | Вывод флажка который будет включен или выключен | 2.5 и выше |
| checkboxes | Вывод неограниченного количества флажков которые можно использовать для множественного выбора | 2.5 и выше |
| chromestyle | Выводит список оберток модулей в доступных шаблонах | 3 и выше |
| color | Выводит поле в котором можно будет выбрать цвет | 2.5 и выше |
| editor | Выводит WYSIWYG редактор | 2.5 и выше |
| Выводит поле для ввода E-mail | 2.5 и выше | |
| file | Выводит поле для выбора файла | 2.5 и выше |
| filelist | Выводит выпадающий список содержимое которого будут файлы из указанной категории | 2.5 и выше |
| folderlist | Выводит выпадающий список содержимое которого будут папки из указанной категории | 2.5 и выше |
| groupedlist | Выводит выпадающий список с значениями которые группируются по определенной метке | 2.5 и выше |
| headertag | Выводит список тегов заголовков h1-h6 | 3 и выше |
| hidden | Вывод скрытого поля | 2.5 и выше |
| imagelist | Вывод выпадающего списка элементами которого будут имена изображений из указанной категории | 2.5 и выше |
| integer | Вывод выпадающего списка элементами которого будут числа в указанном диапазоне с определенным шагом | 2.5 и выше |
| language | Вывод списка языков установленных в системе | 2.5 и выше |
| list | Создает выпадающий список с произвольными данными | 2.5 и выше |
| media | Вывод текстового поля и кнопки для выбора изображения загруженного через медиа менеджер | 2.5 и выше |
| menu | Выводи список созданным в системе меню | 2.5 и выше |
| menuitem | Выводит список созданных в системе пунктов меню | 2.5 и выше |
| modulelayout | Выводит список слоев в модуле (используется только в модулях) | 2.5 и выше |
| note | Выводит заметку | 3.1 и выше |
| password | Выводит поле для ввода пароля | 2.5 и выше |
| plugins | Вывод списка плагинов из указанной группы | 2.5 и выше |
| radio | Вывод радио кнопки | 2.5 и выше |
| rules | Вывод контроллера для настройки прав доступа к определенной сущности | 2.5 и выше |
| sessionhandler | Выводит выпадающий список элементами которого будет варианты обработчиков сессии | 2.5 и выше |
| spacer | Вывод разделителя | 2.5 и выше |
| sql | Выводи выпадающий список элементами которого будут записи полученные из указанного запроса в базу данных | 2.5 и выше |
| tag | Выводит поле для создания или выбора тегов | 3.1 и выше |
| tel | Отображение поля для ввода телефонного номера | 2.5 и выше |
| templatestyle | Отображение списка шаблонов установленных в системе | 2.5 и выше |
| text | Отображение однострочного текстового поля | 2.5 и выше |
| textarea | Вывод многострочного текстового поля | 2.5 и выше |
| timezone | Отображение выпадающего списка выбора часовых поясов | 2.5 и выше |
| URL | Отображает текстовое поле для ввода ссылок | 2.5 и выше |
| user | Выводит текстовое поле и возле него кнопка для выбора пользователя, при нажатии на кнопку появляется модальное окно со списком зерегестрированных на сайте пользователей | 2.5 и выше |
| usergroup | Выводит выпадающий список элементами которого будут группы пользователей созданные на сайте | 2.5 и выше |
Код с полями хранится в папке libraries/joomla/form/fields/
В Joomla 3.x часть полей хранится в папке в папкеlibraries/cms/form/field/
Атрибут Showon
Позволяет скрыть поле, на основе значения другого поля.
showon="параметр:значение"
Значения можно указывать через запятую, применять логические "И", "ИЛИ", "Не равно", "Не пусто":
showon="foo:1,2" - несколько
showon="foo:1[AND]baz:1" - И
showon="foo:1[OR]baz:1" - ИЛИ
showon="foo!:1" - Не равно
showon="foo!:" - Не пусто
Атрибут filter
Для некоторых типов полей в Joomla существует такой атрибут как filter. Если просто, функция его в том, чтобы привести введённый текст к определённому шаблону, например только число или только текст без пробелов и т.д. Это очень удобно при создании модулей или компонентов, когда нужно получить значение определённого формата.
Очень хорошо о работе фильтра написано в этой статье: cmscafe.ru - JForm – фильтры полей в формах Joomla.
Все варианты можно найти вот тут или здесь. Я же приведу те которые могут понадобиться:
- INT, INTEGER: целое число, можно со знаком,
- UINT: целое число без знака,
- FLOAT, DOUBLE: число с плавающей точкой (запятой) десятичные, сотые,
- BOOLEAN: логическое значение, или 1 или пусто
- WORD: строка, содержащая только символы A-Z или знак подчеркивания (без учета регистра),
- ALNUM: строка, содержащая только A-Z или 0-9 (без учета регистра),
- CMD: строка, содержащая A-Z, 0-9, подчеркивания, точки или дефисы (без учета регистра),
- BASE64: строка, содержащая A-Z, 0-9, косые черты, плюс или равно (без учета регистра),
- STRING: полностью декодированная и очищенная строка (по умолчанию),
- HTML: очищенная строка,
- ПУТЬ: очищенный путь к файлу или к директории,
- TRIM: строка, обрезанная от пробелов,
- RAW: необработанная строка возвращается без фильтрации,
- safehtml: очищает все нежелательные HTML теги и атрибуты.
- server_utc: конвертирует дату в UTC исходя из настройки временной зоны сервера.
- user_utc: конвертирует дату в UTC исходя из настройки временной зоны пользователя.
- url: фильтрует все теги, которые не могут содержаться в URL, при этом протокол остается.
- tel: фильтрует как номер телефона. Пытается сопоставить значение с некоторыми шаблонами, в противном случае возвращает строку с цифрами.
Repeatable
На данный момент это поле не рекомендуют...
Пробовал, как-то вот так:
XML
<fieldset name="basic"> <field name="slider" type="repeatable" icon="list" label="Test" description="Test descr" default="" maximum="6"> <fieldset hidden="true" repeat="true"> <field name="sl_img" type="media" label="Заголовок" description="Заголовок" /> <field name="sl_text" type="text" label="Описание" description="Описание" /> </fieldset> </field> </fieldset>
PHP
<?php
defined('_JEXEC') or die;
$slide = json_decode($params->get('slider'));
foreach ($slide->sl_img as $num => $img) {
echo "<div>";
echo "<img src="/.$img." />";
if ($slide->sl_text[$num]!='') {
echo "<p>".$slide->sl_text[$num]."</p>";
}
echo "</div>";
}
Subform
Позволяет создавать "Форму в форме", может быть повторяющимся.
В замену типу repeatable
Вот такой вариант:
В Файле манифеста:
<field name="slider" type="subform" formsource="modules/mod_xxx/sub/sub.xml" max="15" multiple="true" layout="joomla.form.field.subform.repeatable" groupByFieldset="true" buttons="add,remove,move" label="Слайды" description="Слайды" />
Форма которая будет "выпадать", путь до которой указан: modules/mod_xxx/sub/sub.xml
<?xml version="1.0" encoding="UTF-8"?> <form> <fieldset name="slide"> <field name="sl_img" type="media" label="Изображение" description="Изображение" /> <field name="sl_text" type="text" label="Текст" description="Текст" /> </fieldset> </form>
И в шаблоне модуля:
<?php
defined('_JEXEC') or die;
$slider = $params->get('slider');
if ($slider !='') {
echo '<div class="row">';
echo '<ul>';
foreach ($slider as $item) {
if ($item->sl_img !='') {
echo '<li>';
echo '<img src="' . $item->sl_img . '" />';
if ($item->sl_text !='') {
echo '<p>' . $item->sl_text . '</p>';
}
echo '</li>';
}
}
echo '</ul>';
echo '</div>';
}
else {
echo '<p>Не создано ни одного слайда</p>';
}
Ссылки и благодарности
Основная часть взята с сайта: inet-reklama.com, за что им огромная благодарность! Вообще очень полезный ресурс, всем советую!
Оригинальная документация:
- https://manual.joomla.org/docs/general-concepts/forms-fields/standard-fields/ - Новая
- https://docs.joomla.org/Form_field,
- https://docs.joomla.org/Standard_form_field_types
- https://docs.joomla.org/Category:Standard_form_field_types
- https://docs.joomla.org/Standard_form_field_and_parameter_types
Про формы в Joomla: https://jpath.ru/docs/input/forms/formy-v-joomla#filtratsiya-dannykh-polya
Про "Repeatable":
- Joomlaforum: http://joomlaforum.ru/index.php/topic,310407.0.html
- cyberforum: http://www.cyberforum.ru/joomla/thread1382618.html
Про "Subform":
- Официальная: https://docs.joomla.org/Subform_form_field_type
- Не офф: http://joomla.stackexchange.com/questions/17134/new-sub-form-field-function-in-joomla-3-6
- Пример вывода: http://joomla.stackexchange.com/questions/17146/how-to-get-value-from-sub-form - делал по нему.