Стандартный тип поля Joomla XML - Color

Поле color в XML-формах Joomla добавляет элемент выбора цвета с поддержкой ручного ввода кода и визуальной палитры. Значение можно указать вручную в форматах HEX, RGB или RGBA, либо подобрать через встроенный интерфейс. Формат возвращаемых данных и поддержка прозрачности зависят от версии Joomla и настройки атрибута alpha.

Joomla 3.x Joomla 4.x Joomla 5.x Joomla 6.x

Атрибуты поля

Ниже приведены основные атрибуты, поддерживаемые типом поля . Используйте их внутри тега <field> вашего XML-манифеста.

Атрибут Тип Описание
name string Обязательно. Уникальный системный идентификатор поля. Используется для получения значения в PHP ($input->get('name')).
type string Обязательно. Должно быть равно color. Определяет тип поля и его поведение.
label string Заголовок поля, видимый пользователю в админке. Может быть языковой константой (например, COM_EXAMPLE_COLOR_LABEL).
description string Текст подсказки. В Joomla 3 отображается при наведении на заголовок (tooltip), в J4/5/6 выводится под полем или во всплывающем окне.
default string Значение по умолчанию. Рекомендуется указывать в формате HEX (#RRGGBB) или RGBA. При некорректном формате поле автоматически сбросится на #000000.
alpha boolean Включает поддержку прозрачности (true/false). При true поле возвращает значение в формате RGBA. В Joomla 3 полностью игнорируется. По умолчанию false.
format string Формат сохраняемого значения: hex, rgb, rgba или auto (по умолчанию). В Joomla 4+ приоритет имеет атрибут alpha.
validate string Подключает валидатор. Рекомендуется validate="color", который проверяет корректность формата HEX или RGBA на уровне сервера и клиента.
filter string Фильтр обработки входных данных. Доступные варианты: string (по умолчанию) является базовой очисткой от опасных символов; color делает строгую проверку формата цвета, отклоняет недопустимые значения; raw работает без фильтрации (не рекомендуется); unset поле игнорируется при обработке формы.
class string Дополнительные CSS-классы для обёртки поля. Например, class="my-color-field" для кастомной стилизации.
required boolean Делает поле обязательным для заполнения (true/false). По умолчанию false.
readonly boolean Запрещает редактирование значения. Поле отображается, но пользователь не может изменить цвет. По умолчанию false.
disabled boolean Полностью отключает поле. Значение не отправляется в форме и не сохраняется. По умолчанию false.
showon string Условное отображение поля в зависимости от значений других полей. Например, showon="enable_color:1". Доступно в Joomla 3.3+ и J4/5/6.

Визуальные примеры

Ниже представлены скриншоты отображения поля в разных версиях Joomla и темах административной панели.

Joomla 3 Isis
Поле типа Color в настройках Joomla 3.x (шаблон админки Isis)
Классический вид поля в шаблоне Isis.
Joomla 4 / 5 / 6 Cassiopeia (Светлая)
Визуальное отображение поля Color в Joomla 4/5/6 - светлая тема админки Cassiopeia
Современный дизайн Cassiopeia. Светлая тема.
Joomla 4 / 5 / 6 Cassiopeia (Темная)
Темная тема админки. Контрастный текст и темный фон.

Пример использования в XML

Добавьте этот код внутрь тега вашего XML-манифеста. Атрибут type="color" автоматически добавляет палитру для выбора цвета и проверяет корректность значения в форматах HEX и RGBA.

<field
    name="my_color"
    type="color"
    label="Выберите цвет"
    description="Используйте палитру или введите значение вручную"/>

Получение значения в PHP

Для получения выбранного цвета в PHP-коде необходимо обратиться к объекту ввода приложения. В современных версиях Joomla используется подход через класс Factory, а в Joomla 3.x применяются устаревшие префиксы J. Независимо от версии, всегда применяйте фильтрацию входных данных, чтобы гарантировать безопасность и корректность значения перед использованием в шаблонах.

// --- ВАРИАНТ ДЛЯ JOOMLA 4 / 5 / 6 (Современный) ---
use Joomla\CMS\Factory;

// Получаем объект ввода через Factory (рекомендуемый способ в MVC)
$input = Factory::getApplication()->input;

// getString() возвращает значение как строку, фильтр очистит недопустимые символы
$myColor = $input->getString('my_color', '#000000');

// Опционально: валидация формата цвета (защита от некорректных данных)
$myColor = preg_match('/^#([0-9A-F]{3}){1,2}$|^rgba?\([^)]+\)$/i', $myColor) 
    ? $myColor 
    : '#000000';


// --- ВАРИАНТ ДЛЯ JOOMLA 3.x (Устаревший) ---
// В J3 использовался JFactory или JRequest
$input = JFactory::getApplication()->input;
$myColor = $input->get('my_color', '#000000', 'string'); 

// ИЛИ старым способом (не рекомендуется, но для полноты картины):
$myColor = JRequest::getVar('my_color', '#000000', 'get', 'string');


// --- ПОДГОТОВКА К ВЫВОДУ В HTML / CSS ---
// Значение цвета безопасно для вставки в атрибуты style="" после экранирования
// Для inline-стилей:
echo '<div style="background-color: ' . htmlspecialchars($myColor, ENT_COMPAT, 'UTF-8') . ';">Контент</div>';

// Для передачи в JS или data-атрибуты:
echo '<div data-color="' . htmlspecialchars($myColor, ENT_QUOTES, 'UTF-8') . '">Контент</div>';

// Если цвет может содержать RGBA и используется в CSS-переменной:
$cssColor = htmlspecialchars($myColor, ENT_NOQUOTES, 'UTF-8');
echo '<style>:root { --main-color: ' . $cssColor . '; }</style>';

Приведённый код демонстрирует два способа получения данных: современный для Joomla 4/5/6 и обратно совместимый с Joomla 3. В обоих случаях используется строковый фильтр, который очищает ввод от потенциально опасных символов. Дополнительно в примере для новых версий показана проверка формата через регулярное выражение, которая гарантирует, что переменная будет содержать только допустимое значение HEX или RGBA. После получения данные безопасно экранируются перед вставкой в HTML-атрибуты и CSS-переменные.

Совет: Никогда не выводите значение цвета напрямую в атрибут style="" без предварительного экранирования. Валидация на стороне формы защищает от случайных ошибок, но не гарантирует защиту от подменённых HTTP-запросов. Всегда используйте htmlspecialchars() при вставке в CSS или data-атрибуты. При работе с альфа-каналом (RGBA) в Joomla 4+ учитывайте, что старые браузеры могут игнорировать прозрачность — предусмотрите резервный HEX-фон в CSS для корректного отображения во всех средах.

Подводные камни

  • Отсутствие поддержки прозрачности в Joomla 3: Атрибут alpha="true" полностью игнорируется в J3, поле всегда возвращает HEX-значение. При обновлении кода под J4+ необходимо явно проверять формат ответа, чтобы избежать ошибок парсинга.
  • Ограничения нативного HTML5-пикера: Спецификация <input type="color"> не поддерживает альфа-канал. В Joomla 4/5/6 прозрачность эмулируется JavaScript-оверлеем, который может работать нестабильно при отключённом JS или в устаревших версиях Safari.
  • Недостаточность фильтра JInput: Метод getString() или фильтр string лишь удаляет HTML-теги, но не проверяет синтаксис цвета. Без дополнительной серверной валидации в базу могут попасть произвольные строки, ломающие CSS-правила.
  • Сброс значения по умолчанию при ошибке формата: Если в атрибуте default указано недопустимое значение (например, red, transparent или пустая строка), поле автоматически сбросится на #000000. В XML-манифесте всегда используйте валидный HEX или RGBA.
  • Конфликт форматов при добавлении альфа-канала: Если в уже установленном расширении включить alpha="true", ранее сохранённые HEX-значения не конвертируются в RGBA автоматически. Интерфейс покажет цвет без прозрачности, что может нарушить вёрстку, если CSS ожидает формат rgba().
0 items Корзина
Консультация по услуге:

Вам нужно оказать услугу по формированию файла с XML полями для Joomla? Заполните форму ниже с информацией о необходимых вам данных и получите цену готового файла с полями Joomla XML