Стандартные типы 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 и выше
email Выводит поле для ввода 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, за что им огромная благодарность! Вообще очень полезный ресурс, всем советую!

Оригинальная документация: 

Про формы в Joomla: https://jpath.ru/docs/input/forms/formy-v-joomla#filtratsiya-dannykh-polya 

Про "Repeatable":

Про "Subform":