Стандартный тип поля Joomla XML - URL
Тип поля URL в Joomla XML предназначен для ввода и валидации веб-адресов. Поле отображает стандартный текстовый инпут с проверкой формата ссылки браузером. Поддерживается во всех актуальных версиях CMS (Joomla 3.x, 4.x, 5.x, 6.x).
Ключевая особенность — полная поддержка международных доменов (IDN), таких как сайт.рф или сайт.бел. Joomla автоматически корректно обрабатывает и сохраняет кириллические и другие национальные символы, преобразуя их при необходимости в формат Punycode для внутренней работы, что гарантирует целостность данных независимо от кодировки.
Атрибуты поля
Ниже приведены основные атрибуты, поддерживаемые типом поля . Используйте их внутри тега <field> вашего XML-манифеста.
| Атрибут | Тип | Описание |
|---|---|---|
name
|
string | Обязательно. Уникальный системный идентификатор поля. Используется для получения значения в PHP ($input->get('name')). |
type
|
string | Обязательно. Должно быть равно "url". Определяет тип поля и его поведение. |
label
|
string | Заголовок поля, видимый пользователю в админке. Может быть языковой константой (например, COM_EXAMPLE_URL_LABEL). |
description
|
string | Текст подсказки. В Joomla 3 отображается при наведении на заголовок (tooltip), в J4/5/6 — может выводиться под полем или во всплывающем окне. |
default
|
string | Значение по умолчанию, которое появится в поле при первом открытии формы (например, https://iws.by). |
required
|
boolean | Если true, поле становится обязательным. Форма не сохранится без заполненного значения. Браузер покажет предупреждение. |
relative
|
boolean | Важно для URL! Если true, разрешает ввод относительных путей (без http://). Полезно для внутренних ссылок Joomla. По умолчанию false (требует полный внешний URL). |
scheme
|
string | Список разрешенных протоколов через запятую (например, http,https,ftp). Ограничивает ввод только указанными схемами для безопасности. |
filter
|
string | Фильтр данных при сохранении. Для URL рекомендуется оставить пустым (по умолчанию применяется фильтр url) или явно указать url. |
validate
|
string | Правило валидации Joomla. Можно указать url для дополнительной строгой проверки формата ссылки на стороне сервера. |
maxlength
|
integer | Максимальное количество символов, которое можно ввести в поле. Защищает от переполнения базы данных. |
readonly
|
boolean | Если true, поле доступно только для чтения. Пользователь видит значение, но не может его изменить. Значение сохраняется. |
disabled
|
disabled | Если true, поле полностью отключено (серое). Его значение не отправляется и не сохраняется при отправке формы. |
hint
|
string | Текст-заполнитель (placeholder), который виден в пустом поле и исчезает при начале ввода. |
class
|
string | Дополнительные CSS-классы для стилизации самого элемента . Например, form-control или другие классы. |
size
|
integer | Видимая ширина поля в символах. Не ограничивает длину ввода, влияет только на визуальный размер вводимой области. |
showon
|
string | Условие отображения поля. Позволяет показывать поле только если другое поле имеет определенное значение (пример: showon="enable_url:1"). |
autocomplete
|
string | Управляет автозаполнением браузера. Используйте off для отключения (часто для уникальных ID) или on для включения. |
autofocus
|
boolean | Если true, курсор автоматически окажется в этом поле после загрузки страницы. Удобно для первых полей формы. |
spellcheck
|
boolean | Включает (true) или отключает (false) проверку орфографии браузером. Для URL обычно отключают (false). |
onchange
|
string | JavaScript-код, который выполняется при каждом изменении значения в поле. |
translate_default
|
boolean | Если true, Joomla попытается перевести значение default. Для статических URL рекомендуется ставить false. |
label_class
|
string | CSS-классы, применяемые к тегу |
layout
|
string | Путь к альтернативному макету (layout) для рендеринга поля. Используется в Joomla 4/5/6 для глубокой проработки HTML шаблона поля. |
Визуальные примеры
Ниже представлены скриншоты отображения поля в разных версиях Joomla и темах административной панели.
Пример использования в XML
Добавьте этот код внутрь тега вашего XML-манифеста. Атрибут type="url" автоматически активирует валидацию ссылки браузером.
<field
name="url"
type="url"
label="URL адрес"
description="Введите необходимый URL адрес"/>
Получение значения в PHP
Для получения данных из полей формы в Joomla используется объект JInput. Он обеспечивает безопасную фильтрацию входных данных. Ниже приведены примеры получения URL-адреса для современных версий (J4/J5/J6) и устаревших (J3). Обратите внимание на использование метода getUrl(), который автоматически проверяет наличие протокола и корректность ссылки. Также рассмотрен важный нюанс обработки кириллических доменов (IDN).
// --- ВАРИАНТ ДЛЯ JOOMLA 4 / 5 / 6 (Современный) ---
use Joomla\CMS\Factory;
// Получаем объект ввода через Factory (рекомендуемый способ в MVC)
$input = Factory::getApplication()->input;
// getUrl() строго проверяет протокол и безопасность ссылки
$myUrl = $input->getUrl('my_url_field', '');
// --- ВАРИАНТ ДЛЯ JOOMLA 3.x (Устаревший) ---
// В J3 использовался JFactory или JRequest
$input = JFactory::getApplication()->input;
$myUrl = $input->get('my_url_field', '', 'url');
// ИЛИ старым способом:
$myUrl = JRequest::getVar('my_url_field', '', 'get', 'url');
// --- ОБРАБОТКА IDN (КИРИЛЛИЧЕСКИЕ ДОМЕНЫ) ---
// Если URL содержит кириллицу (например, сайт.рф), он хранится как Punycode.
// Для вывода в читаемом виде (UTF-8) используйте преобразование:
// Для J4/J5/J6:
use Joomla\String\Punycode;
$displayUrl = Punycode::urlToUTF8($myUrl);
// Для J3:
$displayUrl = \JStringPunycode::urlToUTF8($myUrl);
// Вывод ссылки
echo '<a href="' . htmlspecialchars($myUrl) . '">' . htmlspecialchars($displayUrl) . '</a>';
В Joomla 4+ класс JFactory заменен на Joomla\CMS\Factory. Метод getUrl() является наиболее надежным способом получения ссылок, так как он отбрасывает некорректные данные.
Важно про IDN: Кириллические домены (IDN) в базе данных Joomla хранятся в формате Punycode (xn--...). Без преобразования через Punycode::urlToUTF8() пользователь увидит непонятный набор символов вместо красивого адреса сайта. Всегда используйте htmlspecialchars() при выводе в HTML для защиты от XSS.
Совет: Для полей типа URL всегда используйте фильтр getUrl(). Если вы поддерживаете Joomla 3, убедитесь, что экранируете вывод. Для IDN доменов преобразование в UTF-8 критично для правильного отображения ссылки пользователю.
Подводные камни
-
Требование протокола: По умолчанию поле использует HTML5 тип . Это означает, что браузер и Joomla потребуют наличия протокола (http:// или https://). Ввод просто example.com может вызвать ошибку валидации в браузере или сохранить некорректную ссылку.
-
IDN домены (Кириллица): При вводе доменов на кириллице (например, сайт.рф или сайт.бел) убедитесь, что ваша версия Joomla корректно обрабатывает кодировку. В некоторых случаях может потребоваться преобразование в Punycode (xn--d1acufc.xn--p1ai) для корректной работы в атрибуте href.
-
Ограничение длины (255 символов): Если в вашей базе данных колонка для этого поля имеет тип VARCHAR(255), длинные URL с GET-параметрами могут быть обрезаны при сохранении. Для сложных ссылок рекомендуется использовать тип колонки TEXT или VARCHAR(500+).
-
Фильтрация в PHP: При получении значения через $input->getUrl() Joomla применяет строгую фильтрацию. Если ссылка будет сочтена невалидной (например, отсутствует протокол), метод может вернуть пустое значение. Для более мягкого получения данных используйте $input->getString() и проверяйте наличие протокола вручную.