Переключатель чанков в MODX Revolution: от конфигов к радио-кнопкам
При разработке на CMS MODX Revolution часто возникает задача динамического выбора чанков для вывода на странице. Например, у вас есть несколько вариантов шапки сайта (header1, header2, header3, header4), и нужно переключаться между ними. Самый простой путь - использовать системные настройки (конфиги) с чекбоксами, но это быстро приводит к путанице: если отметить несколько галочек, сработает только первый по списку. Гораздо удобнее сделать переключатель в виде радио-кнопок или выпадающего списка. Разберём, как это реализовать профессионально.
Почему конфиги с чекбоксами - плохое решение
Исходный код использует конструкцию if/elseif с проверкой четырёх разных конфигов. Это работает, но имеет недостатки:
- Можно случайно включить несколько чекбоксов - выведется только первый, остальные игнорируются
- Для добавления нового варианта нужно создавать ещё один конфиг и дописывать условие
- Нет наглядного интерфейса выбора - администратор видит только галочки
Лучшая альтернатива - один параметр, в котором хранится значение выбранного чанка (например, число или строка).
Готовое решение: системная настройка с типом «Список»
В MODX Revolution можно создать системную настройку (System Setting) с типом listbox или radio. Это позволит выбрать только один вариант из заданных.
Пошаговая инструкция
1. Зайдите в меню «Система» → «Системные настройки».
2. Нажмите «Создать новую настройку» и заполните поля:
- Ключ (Key):
header_variant - Название: Вариант шапки
- Тип поля ввода:
listbox(выпадающий список) илиradio(радио-кнопки) - Возможные значения:
header1==Шапка 1||header2==Шапка 2||header3==Шапка 3||header4==Шапка 4 - Значение по умолчанию:
header1
3. Сохраните настройку.
Код в шаблоне или чанке
Теперь в нужном месте шаблона достаточно одной строки:
{$_modx->config.header_variant | chunk}Если значение header_variant равно header2, MODX подставит чанк header2. Никаких условий - просто и надёжно.
Альтернатива: TV-параметр для ресурса
Если выбор шапки должен отличаться для каждой страницы, используйте TV-параметр (Template Variable) с типом Dropdown или Radio Options. Привяжите его к нужным шаблонам. Тогда в шаблоне пишите:
{$ваш_tv | chunk}Это даёт гибкость: на главной странице - одна шапка, на внутренних - другая.
Сравнение подходов
| Метод | Плюсы | Минусы |
|---|---|---|
| Чекбоксы + if/elseif | Простота для новичка | Множественный выбор, сложность масштабирования |
| Системная настройка (listbox/radio) | Единый выбор, легко добавить новые варианты | Требует создания настройки |
| TV-параметр | Гибкость по страницам | Нужно настраивать для каждого шаблона |
Рекомендации для SEO-специалистов и разработчиков
При выборе варианта шапки учитывайте:
- Изменение шапки не должно ломать семантическую структуру страницы (теги h1-h6)
- Логотип и контакты должны оставаться доступными для индексации
- Используйте один источник истины - избегайте дублирования конфигов
Переход от чекбоксов к радио-кнопкам или выпадающему списку не только упрощает администрирование, но и предотвращает ошибки. Попробуйте оба описанных метода и выберите подходящий для вашего проекта.