2007/03/03

Blogger Widgetで「続きを読む」を自動化。-- 3.1

前回書いた Blogger Widgetで「続きを読む」を自動化。-- 3ですが、一部不具合がありました。

Bloggerのヘルプを真面目に読んだ所、ページ表示状態を示す変数であるpageTypeは値として item,index,archiveの3種類があるとの事でしたが、前回のテンプレートではarchiveである時を考慮していませんでした。


このarchiveという状態は、月や週単位でのアーカイブされた記事を表示する場合に代入されてくる値ですので、以下のような設定の場合は記事は要約されていますから、「続きを読む」を表示する必要があります。
  <style type='text/css'>
    <b:if cond='data:blog.pageType == "item"'>
      .fullpost {display:block;}
      .readmore {display:none;}
    <b:else/>
      .fullpost {display:none;}
      .readmore {display:block;}
    </b:if>
  </style>


よってまずは当初のテンプレートから以下のような部分を探します。使っているテンプレートにより若干の違いがあるかと思いますが、<data:post.body/>と書いてある部分はテンプレート中に一箇所のみ必ずあるはずです。
    <div class='post-body'>
        <p><data:post.body/></p>
    </div>
    <div class='post-footer'>


この見つかった部分、つまりは<data:post.body/>直後に「続きを読む」の機能部分のコードを入れます。この例では単純な<a;>タグと文字列によるリンクを作成していますが、これは任意な方法で構いません。ポイントは通常ならばhref="****"となる代わりにexpr:href='data:post.url'とBloggerの式を利用してい部分です。
    <div class='post-body'>
      <p>
        <data:post.body/>
      </p>
      <b:if cond='data:blog.pageType != "item"'>
        <p>
          <a expr:href='data:post.url'>
           続きを読む・・
          </a>
        </p>
    </div>
    <div class='post-footer'>


前回の記事とは条件文が違っていて、pageTypeがitemではない場合には「続きを読む」を表示するという条件になっています。

本来ならばこれらを組み込んでテンプレートとして提供できれば良いのでしょうが、私にはデザインセンスがないので・・・。

関連のありそうな記事

0 コメント: