Переключатель чанков в 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)
    • Логотип и контакты должны оставаться доступными для индексации
    • Используйте один источник истины - избегайте дублирования конфигов

    Переход от чекбоксов к радио-кнопкам или выпадающему списку не только упрощает администрирование, но и предотвращает ошибки. Попробуйте оба описанных метода и выберите подходящий для вашего проекта.

    Часто задаваемые вопросы