Стандартный тип поля 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().
Войти

Еще нет аккаунта?

Мы используем файлы cookie, чтобы улучшить ваше впечатление от нашего сайта, а так же его работоспособность. Просматривая сайт, вы соглашаетесь с использованием нами файлов cookie.
0 items Корзина
Консультация по услуге:

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