Blogger のテンプレートには、ウィジェットタグという、一定の条件ごとに出力する HTML コードを変化させるための特別なタグが存在します。今回、このウィジェットタグに新しい表現方法が加わったと、Blogger Buzz が伝えています。
これまで、ウィジェットタグの中では
+で値を連結したり-で値を差し引いたり==や!=で値が等しいか等しくないかをチェックしたり<や>、<=、>=で値を比較したり
NOT 演算子
! や not を使って、「何かが true(真)ではないとき」という条件を表現する。<b:if cond='!data:post.allowComments'>...
(コメントが可能でなければ…)これまでは、
<b:else/> を使って表現していたヤツですね。三項演算子
? と : を使った三項演算子。? の前の条件が true(真)の場合は : の前のもの、false(偽)の場合は : の後ろのものを表示します。<a expr:class='data:post.allowComments ? "comments" : "no-comments"' ...
(コメント可能な場合、a 要素の class 属性に comments を指定し、不可能な場合は no-comments を指定する。)これまた、
<b:if cond='...'> と <b:else/> を組み合わせて、表現していたものです。メンバシップ演算子
これは、ある値が集合の要素の 1 つであるかどうかをチェックするためのもの。
in と contains とが使えます。<b:if cond='data:blog.pageType in {"index", "archive"}'>...
(ページタイプがトップページかアーカイブページのときに…)<b:if cond='{"item", "static_page"} contains data:blog.pageType'>
(ページタイプが個別ページか静的ページのときに…)in と contains で、チェック対象の値と集合(もしくは配列)の記述順が逆になるので要注意。とはいえ、複数の <b:if cond='...'> を併記する必要がないのは、便利です。AND 演算子
and や && を使って、複数の条件をともに満たす場合について、記述可能に。<b:if cond='data:blog.pageType == "index" and data:post.allowComments'>...
(ページタイプがトップページで、かつコメント可能なとき…)以前は、
<b:if cond='...'> をネスト(入れ子に)して実現していたもの。OR 演算子
or や || を使って、複数の条件のうち、1 つでも満たす場合について、記述可能に。<b:if cond='data:blog.pageType == "index" or data:post.allowComments'>...
(ページタイプがトップページか、またはコメント可能なとき…)in、contains と同様、これからは <b:if cond='...'> を何回も書かなくて済みます。括弧
( ) を使って、演算の順序を指定する。<div expr:style='"max-width: " + (data:width + 10) + "px;"'>...
(div 要素 style 属性の最大幅に、現在の横幅プラス 10 ピクセルした値を指定する。)これらの新しい演算子や表現を使うと、これまで Blogger テンプレートで条件分岐を記述していた、煩雑な作業が随分と楽になりそうですね。本格的に Blogger テンプレートをいじってみたい!という人は、ぜひ参考にしてください。
参考:

