Blogger文法<b:loop>でラベルを呼び出す処理はこれを読めばわかる

Bloggerのラベルを<b:loop>で呼び出す処理ってどんなだろう。なんでloop文なのだろうか。以下では、メインのウィジェットである、投稿ウィジェットとラベルウィジェットのloopの処理の違いをまとめてみました。大きな違いは、なんのデータリストを参照しているか?という点です。


main投稿ウィジェットにおけるloop

    <b:loop values='data:post.labels' var='label'>
      <a expr:href='data:label.url' rel='tag'><data:label.name/></a><b:if cond='data:label.isLast != &quot;true&quot;'>,</b:if>
    </b:loop>
post.label = 記事それぞれのラベル、てかラベルリスト。例えば、この記事のラベルリストはBloggerHowToOS9_BloggerTheme作成記だから、<b:loop>で呼び出そうとしているデータリストの中身はこの2つのはず。もう一度コード。


    <b:loop values='data:post.labels' var='label'>
      <a expr:href='data:label.url' rel='tag'><data:label.name/></a><b:if cond='data:label.isLast != &quot;true&quot;'>,</b:if>
    </b:loop>
以下の2つの作業をおこなうことになる。
  1. label = ' BloggerHowTo'  ラベルURL、ラベル名を付与した<a>を生成
  2. label = 'OS9_BloggerTheme作成記 ' ラベルURL,ラベル名を付与<a>を生成
つまり、メイン投稿ウィジェットの<b:loop>では、記事に設定されているラベル数分びループ処理を行い、ラベルのURLとラベルのタイトルを<a>に格納して、htmlに記述する。ということをやっていることになる。data:label.isLastは、この例で言えば2のOS9_BloggerTheme作成記のときにtrueになります。isLastは、リストの最後のラベルを対象にした条件分岐をできるようにする構文です。



Labelウィジェットにおけるloop

main投稿ウィジェットでは、その記事に設定されているラベル(リスト)を<b:loop>で呼び出していましたが、対してLabelウィジェットでは、ブログ全体のラベルリストを呼び出します。つまり、全てのラベルを呼び出して、htmlへ記述する処理を行っています。
<ul>
<b:loop values='data:labels' var='label'> // data:labels = ブログ全体のラベルリスト
  <li>
    <a expr:href='data:label.url'><data:label.name/></a>
  </li>
</b:loop>
</ul>

やっていることは、ブログ全体のラベルリストを対象に、それぞれラベルのURL、タイトルを取得して<a>に格納、htmlに記述する。さっきのとの違いは、対象にしているリストが異なっていること。この、HTMLタグとBlogger独自タグが混在しているのってちょっと面白いですよね。

順番的には、1<b>Blogger文法タグ, 2HTMLタグの順番に処理されるようです。この短いコードでブログすべてのラベルを取得することができるのに驚き。こんなシンプルなのね。

0 コメント: コメントを投稿