2017年3月6日月曜日

Blogger のアーカイブの情報が少し良くなってた!

こんにちはー!

Bloggerの多機能テーマを開発中、開発中のテーマをデバッグしていたら、ちょうど今関わっているところで修正があったようなので、一応記事に残しておこうと思います。


変更された点


今まで「テンプレート」だった名前が「テーマ」に変わっていたのは前回の投稿のとおりですが、実は他にも細かな所が変わっていました。

実は Blogger のテーマでは、Blogger のヘルプにある情報以外にも、いくつかの情報を取得することができます。

そのうちの一つが、アーカイブページを開いたときにのみ取得可能な以下の情報です。


  • data:view.archive.year
  • data:view.archive.month
  • data:view.archive.day
  • data:view.archive.rangeMessage


これらには、今表示しているアーカイブの開始年月日が入っています。2017年2月のアーカイブであれば、year に 2017、month に 2 が入っていてくれるのですが、月別アーカイブのときでも、 day には常に 1 が入っていました。

これが変わります。

月別アーカイブを表示しているときは、「data:view.archive.day」が存在しなくなりました。これにより、今表示しているのが月単位かそうでないかが分かるようになりました。同様に、年別アーカイブでも「data:view.archive.month」が存在しなくなります。

ちょっとまって。年別アーカイブって?

これも Blogger テーマのデバッグをしていて気がついたことなのですが、隠し機能(?)を発見しました。URLを指定することで「月別アーカイブ」と「年別アーカイブ」を表示することができます。

通常は、アーカイブガジェットを使って月別、週別、日別のいずれかのアーカイブを選択するとその期間ごとの HTML が生成されるのですが、ブログのホームの URL の後に /2017/ とか /2017/02/ とかを入れることでも、年別アーカイブ、月別アーカイブを表示することができます。

例えば「https://madoug-kobo.blogspot.jp/2017/」を開いてみると、おそらく、2017年の投稿が全て表示されるようになっていると思います。

まとめ

アーカイブページで、以下のパラメータをチェックすることで、何年の年別アーカイブなのか、何年何月の月別アーカイブなのか、それともそれ以外のアーカイブなのかを判断することができるようになりました。
  • data:view.archive.year
  • data:view.archive.month
  • data:view.archive.day

アーカイブページでは、標準では「1月, 2017の投稿を表示しています」のようなメッセージが表示されますが、それがテーマのデザイン上よろしくない場合に役立ちます。

この情報を使えば、ページ上に「アーカイブ:2017年」とか、「2017年2月の投稿」とか、適切なメッセージを表示できるようになりますし、ページタイトルについても同様に変更することができます。

これを使うと、パンくずリストにも利用できます。

例えば、以下のように書くことができます。

<b:if cond='data:view.isHomepage'>
  <b:else/>
  <a expr:href='data:blog.homepageUrl'>ホーム</a> &amp;rsaquo;
</b:if>
<b:if cond='data:view.isArchive'>
アーカイブ:
  <b:eval expr='data:view.archive.year ? data:view.archive.year + &quot;年&quot; : &quot;&quot;'/>
  <b:eval expr='data:view.archive.month ? data:view.archive.month + &quot;月&quot; : &quot;&quot;'/>
  <b:eval expr='data:view.archive.day ? data:view.archive.day+ &quot;日&quot; : &quot;&quot;'/>
</b:if>

上記コードの実行結果。パンくずリスト風になった。

ただし、週別アーカイブか日別アーカイブかの判断はすることができません。週別アーカイブの場合、day にはその週の最初の日が入っていますので、「この day は週別アーカイブの最初の日なのか日別アーカイブなのか」という判断ができないためです。

非常に惜しいです。どうにかしてくれると助かります。よろしく Blogger さん!

0 件のコメント :

コメントを投稿