いろいろ調べてみた結果、良い方法が見つかったので紹介いたします。
data:label.nameでの条件判断ではうまくいかない
最初、以下のようにして表示させようとしていました。
<b:if cond='data:label.name == "(ラベル名)"'>
<!--特定のラベル名が含まれる記事だけに表示させたい項目を記載-->
</b:if>
しかしながら、うまくいかないので調べてみると、data:label.nameは<b:loop ...>タグにおけるループ処理内でしかうまく機能しないということが分かりました。ラムダ式
調べていくと、下記リンクのページにて「ラムダ式」なる方法で実行可能であるということが分かりました。
Blogger テンプレートでラムダ式が使用可能に | クリボウのBlogger Tips
ラムダ式とは何かというと、自分も説明できる自信がないので下記リンクを参照してください。
第1回 ラムダ式 - @IT
どのように使用するか?
下記のようにすれば、特定のラベルを含むページのみコンテンツを表示できるようになります。
<b:if cond='data:post.labels any (l => l.name == "(ラベル名)")'>
<!--特定のラベル名が含まれる記事だけに表示させたい項目を記載-->
</b:if>
上記のコードの意味は、「data:post.labels」を「l」と定義し、「l」セット内に含まれるnameという部分がラベル名を含むとき、特定のコンテンツを表示させるという意味になるようです。なお、上記コードの「any」の部分を変えることによりいろいろなことができるようになるようです。詳しくは、上記参照したページのリンクから見てみてください。
どのような時に使うか?
いろいろ利用方法はあるでしょうが、タイトルの下にイメージ画像を表示させたいとき、ラベルごとに画像を変えて表示させるといったことに使えると思います。
自分は、特定のラベルの記事のみに表示させたい広告に使用しています。
逆に、特定のラベルの記事のみに表示させないといったこともできます。
「l.name == "(ラベル名)"」の部分の「==」を「!=」にすればよいだけです。
以上、参考にしていただけたら幸いです。
0 件のコメント:
コメントを投稿