Шаблоны Movable Type
Материал из Movable Type Wiki
Система шаблонов в Movable Type устроена таким образом, что вы можете отобразить контент в точности, как пожелаете. Шаблоны позволяют указать, где будет расположен контент и как он будет выглядеть. Для этого используются специальные теги, которые обычно добавляют к другой разметке, например, к HTML или XML.
Когда создается новый блог, то в нём автоматически создаются стандартные шаблоны. Администратор блога или любой другой пользователь, у которого есть права на редактирование шаблонов, может просматривать или редактировать эти шаблоны.
Большая часть содержания шаблона состоит из неизменяемых частей, например, HTML-тегов (или XML для фидов) и обычного текста. Области, в которых будет постоянно обновляющийся контент, заключены в теги шаблонов Movable Type. Эти теги очень похожи на обычные HTML или XML теги, так что дизайнерам не составит большого труда понять особенности работы с ними и не нужно будет изучать какие-либо языки программирования, чтобы просто изменить внешний вид записей в блоге.
Содержание |
Синтаксис тегов шаблонов
Для тех, кто знаком с HTML и XML, тега шаблонов Movable Type покажутся вполне знакомыми. Все теги шаблонов заключены в угловые скобки. Существуют блоковые теги и строчные. Блоковые состоят из пары тегов - открывающего и закрывающего. А строчные - из одного.
Также в тегах шаблонов используется префикс, известный также как пространство имен, чтобы теги Movable Type можно было легко отличить от HTML-тегов или любых других языков разметки. Кроме того, теги шаблонов можно использовать внутри других языков: PHP, ASP, JSP, и т.д. Например:
<mt:Entries> <mt:EntryTitle /> </mt:Entries>
Теги шаблонов не чувствительны к регистру, поэтому можно выбирать любой удобный вид их отображения. Например, следующие теги являются эквивалентными:
<mt:FooBar> <mt:foobar> <MT:fooBar>
Рекомендуется использовать XML-подобный синтаксис, так как он лучше всего поддерживает текстовыми редакторами, использующими подсветку синтаксиса. Также вы можете встретить и такие названия тегов, сохранившиеся со старых версий Movable Type:
<MTEntries> <$MTEntryTitle$> </MTEntries>
Атрибуты тегов шаблонов
Большинство тегов поддерживает атрибуты, которые позволяют изменить стандартное поведение тега. Атрибуты тегов — это ещё одна особенность тегов шаблонов, которая покажется знакомой тем, кто уже работал с HTML или XML. Атрибут — это пара — ключ и его значение, которая находится в имени тега и отделяется от него пробелом. Значение атрибута всегда должно быть заключено в двойные или одинарные кавычки. Пример:
<mt:Entries lastn="40"> <mt:EntryTitle /> </mt:Entries>
В этом примере lastn является одним из атрибутов блокового тега <mt:Entries>
и имеет значение 40. В результате выполнения этого кода будет отображено 40 заголовков последних записей. Большинство тегов имеют необязательные атрибуты, но в некоторых тегах существуют атрибуты, которые нужно обязательно указывать.
Кроме того, в Movable Type существует набор фильтров — глобальные атрибуты —, которые могут применяться ко всем тегам.
Типы тегов шаблонов
В Movable Type существуют три типа тегов шаблонов: переменные, блоковые и условные.
Переменные теги (теги-переменные)
Переменный тег просто выводит значение для указанного тега. Например, это может быть название блога или заголовок записи. Пример:
<mt:BlogName /> <mt:EntryTitle />
Блоковые теги
Блоковые теги (иначе — контейнерные теги) получили своё название из-за того, что содержат внутри себя другие теги или какой-либо текст. А также состоят из открывающего и закрывающего тега.
Блоковые теги обычно используются для вывода списка элементов, оформление которого будет задано внутри блокового тега. То есть они как бы объявляют: «вот здесь будет список записей, а как он будет оформлен — смотри моё содержимое». Пример:
<mt:Entries> Запись «<mt:EntryTitle />» написана <mt:EntryAuthor /> в <mt:EntryDate /> </mt:Entries>
В этом примере <mt:Entries>
— это блоковый тег, выводящий список записей. Каждая отображённая запись будет содержать заголовок, заключённый в кавычки, автора записи и дату, когда запись была опубликована.
Условные теги
Условные теги — это особая форма блоковых тегов, которая, прежде чем вывести содержимое, проверяет указанные условия. Если условие удовлетворено, то дальнейшие теги будут обработаны.
<mt:If tag="EntryCommentCount" ge="1"> У этой записи больше одного комментария </mt:If>
В этом примере проверяется количество комментариев к записи. И, если оно больше или равно 1, то выводится текст «У этой записи больше одного комментария».
Условные теги легко узнать, так как они всегда начинаются с mt:if
.
Контекст в тегах шаблонов
Контекст (место расположения тега) имеет важное значение в шаблонизаторе Movable Type. Некоторые теги контекстно-независимы (например, <mt:BlogName />
), но большинство тегов могут располагаться только в определённых местах.
Контекст — это расположение тега относительно других тегов и определённых шаблонов. Иногда разный контекст для одного тега может приводить к разным результатам. Пример:
<mt:Entries> <mt:EntryTitle /> <!-- Всё правильно, тег используется в соответствии с контекстом. --> </mt:Entries> <mt:EntryTitle /> <!-- Ошибка! Тег используется вне контекста -->
Первый тег <mt:EntryTitle />
находится в контексте тега <mt:Entries>
. Как упоминалось выше, <mt:Entries>
выводит список записей, а в данном случае — список заголовков записей. Второй тег <mt:EntryTitle />
приведёт к ошиибке, так как он находится вне контекста тега <mt:Entries>
. Шаблонизатор просто не поймёт, какой заголовок необходимо вывести.
Явный и неявный контекст
Рассмотренный выше пример — это явный контекст, когда тег был использован за пределами другого тега. Также существует неявный контекст, когда определённые теги могут (или не могут) быть использованы в определённых шаблонах.
Например, блоковый тег <mt:Entries>
на главной странице выведет один список записей, на странице с архивом по месяцам — другой, и на странице категории список записей будет отличаться от главной страницы, хотя во всех вариантах используется один и тот же тег.
Такой механизм работы позволяет сократить количество кода в шаблонах, так как можно размещать один и тот же код в разных шаблонах, но работать он будет по-разному. Кроме того, в некоторых случаях не понадобятся блоковые теги для вывода содержимого. Например, в шаблоне записи не нужно добавлять блоковый тег <mt:Entries>
, так как контекст здесь — индивидуальная запись. И, чтобы вывести заголовок этой записи, достаточно будет указать <mt:EntryTitle />
.