Альтернативное объяснение "template variable (TV)" в MODx
версия для печатиЗаказчик хочет получить сайт на MODx. Изучаю его по русским обучалкам, параллельно превращая верстку заказчика в живой сайт. В целом, MODx - это отличный конструктор, нацеленный на обычного юзера с нормальной тягой к саморазвитию. Я понял его идеологию "с разбега", но с таким трудом до меня доходил смысл TV, что скрип мыслей слышали соседи :D Читал несколько разных источников с объяснениями, и все равно не понимал. В итоге осенило :) А когда написал эту заметку, вернулся на сайт разработчиков MODx и без проблем нашел следующее определение:
"Переменные шаблона (template variable, TV) - настраиваемое поле ресурса в MODx. TV используется для расширения заданных по умолчанию атрибутов ресурса. Нормальный ресурс MODx обладает определенным количеством дефолтных полей: pagetitle, content, description и т.д." (перевод официального RTFM)
Это все, что нужно знать о TV, когда видишь их в первые. Но проблема в том, что дальше в том же RTFM (как и в русских источниках) начинается сдвиг понятий :-( "Если вам нужно добавить несколько полей на ваши страницы, например второе поле контента или выпадающий список месяцев или еще что-угодно, вы делаете это добавлением Переменной Шаблона (TV) в ваш шаблон." Так вот не надо так это объяснять...
Ресурс - это данные, и все его атрибуты определяются именно предназначением ресурса, а не шаблоном, в который он будет выдаваться. Взять для примера статью блога или товар магазина, это и есть ресурс. Статьи/товары хранятся в таблице. Одна запись - одна статья/товар. Допустим, у таблицы определены поля Дата, Заголовок, ТекстСтатьи, Метки (для товара что-то аналогичное). Так вот в админке MODx все это - атрибуты ресурса. Понятная связь. Трабла в том, что ресурс имеет только предустановленные атрибуты "на все случаи жизни", т.е. у него нет атрибута "Метки" или "Цена". Есть обобщенные атрибуты и так сделано, чтобы покрыть вероятные требования разных разработчиков. Кто-то пишет блог, кто-то магазин. Понятно, что поля нужны разные. Отсюда и предполагаемый общий набор.
Подходим к переменным шаблона (TV). На самом деле - это поля ресурса! Как раз когда под хотелки разраба не хватает предусмотренных по умолчанию полей, он заводит TV и связывает ее с ресурсом. Но черт возьми, какого ж фига это делается через шаблон!? Вот это долго сбивало с толку. Вообщем логика простая: нужно в вашей записи блога/магазина/еще-чего-то новое поле для каких-то данных - заведите TV и свяжите ее с ресурсом. Но делается это через указание шаблонов, имеющих доступ к TV. Шаблоны в свою очередь назначены для отображения записей (ресурсов).
Вообще смысл видимо следующий: записей блога/магазина будет много, но выводиться они все будут через один шаблон элемента. Чтобы каждому однотипному ресурсу (читай записи) не привязывать новое поле, это сделано через связь
Следует помнить, что ресурс в MODx необязательно соответствует конечной записи блога/товару в магазине. Это может быть каталог, содержащий другие ресурсы. Это все конечно хранится в записях таблиц, но разработчик этого не видит.
IMHO, зря создатели MODx отошли от общепринятых понятий и создали свой словарь. К примеру "атрибуты" - это на самом деле "поля". И раз уж ресурс - это запись в таблице, то можно было его так и называть. И логичнее было бы "переменные шаблона" называть "полями ресурса". Но это мое мнение.
[1oo%, EoF]Понравилась статья? Расскажите о ней друзьям: