Данная статья продолжает небольшую серию публикаций с переводами на русский язык разделов справки Blogger, посвященных синтаксису шаблонов разметки блога. В статье описываются тэги, которые вам понадобятся для тонкой настройки шаблона под свои потребности.
(Перевод материала Widget Tags for Layouts)
Тэг widget
Одинарная форма тэга <b:widget> для создания виджетов была рассмотрена в предыдущей статье. Если для работы с шаблоном блога используется только конструктор "Элементы страницы", то этого материала более чем достаточно. Для тонкой же настройки нам потребуется полная форма шаблона. Ее можно увидеть, если скачать шаблон на компьютер или же в режиме, который инициируется при установке галочки напротив "Расширить шаблоны виджета" на вкладке "Изменить HTML".
В полной форме тэг <b:widget> является парным, внутри которого помещается фактическое содержимое виджета.
<b:widget [...атрибуты...]="">
</b:widget>
Теперь рассмотрим, какие тэги вы можете использовать внутри пары тэгов
<b:widget></b:widget>.
Тэги includable и include
Содержимое виджета располагается в подключаемых сегментах, которые имеют следующий формат:
<b:includable id="main" var="thiswidget">
[подключаемое содержимое]
</b:includable>
Атрибуты тэга:
-
id (обязательно) - уникальный идентификатор. (Из цифр и латинских букв.)
-
var (опционально) - идентификатор для данных, адресуемых из содержимого сегмента (см. ниже).
Каждый виджет обязан иметь один подключаемый сегмент с идентификатором id='main'.
Он обычно содержит большую часть контента виджета, и во многих случаях других сегментов не требуется.
Созданные вами сегменты с различными идентификаторами не отображаются автоматически.
Для подключения сегмента (из тела сегмента main или другого сегмента) используйте одиночный тэг <b:include>. (Сегмент main всегда подключается автоматически.)
Атрибуты тэга b:include:
-
name (обязательно) - идентификатор подключаемого сегмента.
-
data (опционально) - выражение, которое передается в сегмент как параметр. Значение данного выражения будет доступно из сегмента через переменную, указанную в его атрибуте var.
Пример, демонстрирующий использование b:includable и b:include. (Тэги loop и data описаны
в следующих разделах данной статьи.) Сегмент main подключает сегмент post, передавая ему в качестве параметра i. Сегмент post получает доступ к данным i через переменную p и выводит свойство title.
<b:includable id="main">
<b:loop values="posts" var="i">
<b:include data="i" name="post" />
</b:loop></b:include>
<b:includable id="post" var="p"> Title: </data:p.title /></b:includable>
Механизм подключаемых сегментов крайне полезен, если нужно в различных местах вставить вставить один и тот же код. Если такой необходимости не возникает, можно просто расположить весь код виджета в пределах одного сегмента main.
Тэг data
При помощи данного тэга осуществляется вставка в тело страницы реального содержимого блога. Примеры использования data:
<data:title />
<data:photo.url />
Первый пример будет работать в большинстве виджетов, поскольку практически все виджеты имеют заголовок, содержащийся в переменной title. Во втором примере используется составная переменная, из которой мы выбираем отдельный компонент.
Скажем, в контексте виджета, отображающего профиль пользователя, переменная photo может иметь компоненты url, height и width. Символ "." означает, что мы выбираем компонент url переменной photo. Существует множество данных, которые вы можете получить при помощи тэга data, в зависимости от конкретного виджета. Подробный список переменных, доступных через данный тэг, представлен в следующей статье.
Тэг loop
Тэг b:loop даёт возможность повторить фрагмент кода несколько раз с различными данными. Он используется чтобы вывести сообщения, комментарии к сообщению, метки сообщения и т.п. Тэг имеет следующий формат:
<b:loop var='identifier' values='set-of-data'>
[код, который будет повторяться в цикле]
</b:loop>
Атрибут var содержит имя переменной, в которой на каждой итерации цикла будет содержаться новая порция данных. Атрибут values содержит имя переменной, в которой находится список, перебор элементов которого будет производиться в цикле. Следующий пример кода выводит заголовки сообщений:
<b:loop var='i' values='data:posts'>
<h2><data:i.title/></h2>
</b:loop>
Тэг if / else
Тэги b:if и b:else используются, чтобы отобразить один вариант контента при выполнении заданного условия и другой вариант — при не выполнении.
Формат использования:
<b:if cond='условие'>
[содержимое, отображающееся, если условие выполняется]
<b:else/>
[содержимое, отображающееся, если условие не выполняется]
</b:if>
Тэг b:else не обязателен. Если он отсутствует, в случае невыполнения условия в данном месте не отображается ничего.
В условие можно помещать что угодно, что вычислится как булево значение. Некоторые переменные сами содержат булево значение, например allowComments. Некоторые примеры:
<b:if cond='data:post.showBacklinks'> Истинно, если в этом посте нужно отображать обратные ссылки.
<b:if cond='data:displayname != "Fred"'> Истинно, если отображаемое имя не равно Fred.
<b:if cond='data:post.numComments > 1'> Истинно, если пост имеет более одного комментария
0 коммент.:
Отправить комментарий