Стандартные типы 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://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 - делал по нему.