Настройка TV-параметров (Template Variables) MODX
TV-параметры — дополнительные поля ресурсов MODX. Позволяют добавить произвольные данные к страницам: изображения, цены, даты, выпадающие списки, галереи, текстовые блоки. Каждый TV привязывается к одному или нескольким шаблонам.
Типы TV и их применение
| Тип | Применение |
|---|---|
| Text | Краткое текстовое поле |
| Textarea | Многострочный текст |
| RichText | WYSIWYG-редактор |
| Number | Числовое поле (цена, количество) |
| Date | Дата с календарём |
| Image | Выбор изображения из медиабраузера |
| File | Загрузка или выбор файла |
| URL | Ссылка |
| Email с валидацией | |
| Checkbox | Один флажок (да/нет) |
| Listbox (single) | Выпадающий список |
| Listbox (multi) | Множественный выбор |
| Radio Options | Переключатели |
| Tag | Теги через запятую |
| autotag | Автодополнение тегов из существующих |
| migxdb | Сложная структура (MIGX) |
Создание TV через менеджер
Элементы → Переменные шаблонов → Создать:
-
Имя:
product_price(только латиница, нижнее подчёркивание) -
Подпись:
Цена(отображается в редакторе) - Тип ввода: Number
-
Значение по умолчанию:
0 - Шаблоны: выбрать шаблоны, где поле должно отображаться
- Вкладка "Доступ": порядок в интерфейсе, группа полей
Типы ввода с настройками
Listbox (single) — Dropdown:
Тип ввода: Listbox (Single)
Параметры ввода:
Color==Цвет||Size==Размер||Weight==Вес
Или из БД:
@SELECT `id`, `name` FROM `site_content` WHERE `template`=5 AND `published`=1
Image с ограничением медиабраузера:
Тип ввода: Image
Параметры ввода:
[[++base_url]]assets/images/products/
Checkbox группа:
Параметры ввода:
monday==Понедельник||tuesday==Вторник||wednesday==Среда||thursday==Четверг||friday==Пятница
Тип вывода: delim (значения через ||)
Вывод TV в шаблоне
[[- Базовый вывод ]]
[[*product_price]]
[[- С форматированием ]]
[[*product_price:number_format=`0,.`, ` `]] ₽
[[- Условный вывод ]]
[[*product_image:notempty=`<img src="[[*product_image]]" alt="[[*pagetitle]]">`]]
[[- С phpthumb ]]
[[*product_image:phpthumb=`w=800,h=600,zc=1`]]
[[- Ссылка на файл ]]
[[*product_brochure:notempty=`<a href="[[*product_brochure]]" class="btn">Скачать брошюру</a>`]]
Вывод TV через сниппет
// Получить TV программно
$resource = $modx->getObject('modResource', $resourceId);
$price = $resource->getTVValue('product_price');
$image = $resource->getTVValue('product_image');
// Установить TV программно
$resource->setTVValue('product_price', 1500);
Организация TV через FastTab
FastTab позволяет группировать TV по вкладкам в редакторе ресурса:
Вкладка "SEO": seo_title, seo_description, seo_robots
Вкладка "Товар": product_price, product_sku, product_weight
Вкладка "Галерея": gallery (MIGX)
Вкладка "Контент": hero_image, hero_text, features_json
Проверка заполненности TV
// В сниппете — проверить заполнение перед выводом
$tvValue = $resource->getTVValue('important_field');
if (empty($tvValue)) {
$modx->log(modX::LOG_LEVEL_WARN, "TV important_field empty for resource {$resource->id}");
}
Сроки
Создание и настройка 10–20 TV для проекта с привязкой к шаблонам и группировкой через FastTab — 3–5 часов.







