Bloggerテンプレートの文法

Bloggerのテンプレートを変更する場合に必要なプログラムの文法です。

if文
<b:if cond='(条件)'>
(処理)
</b:if>

<b:if cond='data:blog.pageType == "item"'>
<b:if cond='data:view.isPost == true'>
<b:if cond='data:view.isPost'>
これは同じ意味です。「 == true」を省略すると、data:view.isPostが「true」の場合だけでなく、data:view.isPostが「post」など文字だった場合にも条件に当てはまります。

if文否定
<b:if cond='(否定の条件)'>
(処理)
</b:if>

<b:if cond='data:blog.pageType != "item"'>
<b:if cond='data:view.isPost != true'>
<b:if cond='data:view.isPost == false'>
<b:if cond='not data:view.isPost'>
<b:if cond='!data:view.isPost'>
これは同じ意味です。「 == false」を省略すると、data:view.isPostが「false」の場合だけでなく、data:view.isPostが空白や何もない場合も条件に当てはまります。

<b:if cond='(条件)'>
(処理)
<b:else/>
(条件に当てはまらなかった場合の処理)
</b:if>
<b:if cond='(条件1)'>
(処理)
<b:elseif cond='(条件2)'/>
(条件1に当てはまらなかった場合の処理)
<b:elseif cond='(条件3)'/>
(条件1、条件2に当てはまらなかった場合の処理)
<b:else/>
(条件1、条件2、条件3に当てはまらなかった場合の処理)
</b:if>
<b:if cond='(条件1) and (条件2)'>
(条件1と条件2に同時に当てはまった場合の処理)
</b:if>
<b:if cond='(条件1) or (条件2)'>
(条件1または条件2に当てはまった場合の処理)
</b:if>

<b:loop index='(配列の添え字)' values='(配列)' var='(配列の1つの変数名)'>
(処理)
</b:loop>

<b:loop index='i' values='data:post.labels' var='label'>
<a expr:href='data:label.url' rel='tag'><data:label.name/></a>
</b:loop>
この例の場合、「data:post.labels」という配列に3個のデータがあった場合、「i=0」のときに「data:post.labels」の1つ目が「label」という名前になります。「label」を使うときは「data:label」と「data:」を付けて使います。「i=1」のときも同様、「i=2」のときも同様の処理をして終わります。

テンプレートはswitch文なども使えますが、ほぼif文とloop文だけで作られています。ここまでは他のプログラムと同じようなルールです。

変数の中身を表示
<data:(変数)/>

<data:post.title/>

タグの中で変数の中身を表示
<a href='<data:post.url/>'>
みたいな書き方はできません。
(タグ) expr:(タグ)='(変数)'>

<a expr:href='data:post.url'>
この例の場合、「data:post.url」の中身が「https://googlebloggertrouble.blogspot.com/」だった場合、実行結果はこうなります。
<a href='https://googlebloggertrouble.blogspot.com/'>
組み合わせて使うこともできます。
<div expr:class='"post-wrapper not-hero post-" + data:post.id''>
<a class='blog-pager-older-link' expr:href='data:olderPageUrl' expr:title='data:messages.morePosts'>

ガジェット
ガジェットはBloggerで使う部品のことです。Blogger側で既に作られているプログラムに上書きして使います。どういうプログラムで動いているかは分からなくなっています。

ガジェットの関数・呼び出し側
<b:include data='(引数)' name='(関数名)'/>

<b:include data='post' name='commentForm'/>

ガジェットの関数・呼び出される側
<b:includable id='(関数名)' var='(引数)'>
(処理)
</b:includable>

<b:includable id='commentForm' var='post'>
<data:post.cmtfpIframe/>
</b:includable>

ガジェットの関数・呼び出し側・引数無し
<b:include name='(関数名)'/>

<b:include name='commentsLink'/>

ガジェットの関数・呼び出される側・引数無し
<b:includable id='(関数名)'>
(処理)
</b:includable>

<b:includable id='commentsLink'>
<b:include name='commentIcon'/>
</b:includable>

一番最初に実行される特別な関数
<b:includable id='main'>
(一番最初に実行する処理)
</b:includable>

<b:includable id='main'>
<b:include name='noContentPlaceholder'/>
<b:include name='super.main'/>
</b:includable>
「super.main」はガジェットはBloggerが作っていて、どういうプログラムで動いているか分からないので、「super.」を付けると、Bloggerが作った関数を実行します。「super.main」の場合はBloggerが作ったmain関数が実行されます。

レイアウト用のウィジェット タグ - Blogger ヘルプ
この記事のタイトルとURLをコピーする blogger
blogger