前回最低限のテーマの作り方を紹介しました。今回は無くてもいいけど使うと便利なテンプレートタイプについて紹介します。
Lokkaにはデフォルトのentry, entries以外に様々なテンプレートタイプがあります。テンプレートは一覧、個別、その他のどれかに分類されます。
テンプレートタイプ
一覧
- index --- トップページのテンプレート
- category --- カテゴリー別の一覧ページのテンプレート
- tag --- タグ別の一覧ページのテンプレート
- yearly --- 年別の一覧ページのテンプレート
- monthly --- 月別の一覧ページのテンプレート
- search --- 検索結果の一覧ページのテンプレート
- entries --- 一覧ページのテンプレート。上記のテンプレートが無い場合に使われる。
個別
- post --- 投稿(Post)の個別ページのテンプレート
- page --- ページ(Page)の個別ページのテンプレート
- entry --- 個別ページのテンプレート
その他
- partial --- テンプレートの一部分を共有するテンプレート
- layout --- テンプレートの外枠を共有するテンプレート
一覧テンプレート
一覧はentries、個別はentryというテンプレートがありますが、例えば一覧で"検索結果だけに必要なもの"があった場合、entriesの中がごちゃごちゃしてしまうのでsearchという名前でテンプレートを作っておくと、検索結果の場合はそちらが優先して使われます。
個別テンプレート
同じようにentryとpostというテンプレートがあった場合投稿(Post)の場合はpostが優先的に表示されます。投稿とそれ以外で別の内容にしたい時に便利です。
どのテンプレートが選ばれるかはURLで決まります。実際には厳密なルールがありますが長くなるので代表的な例を紹介します。
- index --- /
- category --- /category/foo/
- tag --- /tag/foo/
- yearly --- /2011/
- monthly --- /2011/01/
- search --- /search/foo/
- post --- /1
- page --- /2
(postやpageやcategoryはIDの他にスラッグと呼ばれる自由なURLを持つことができます。そちらでもアクセスすることも可能です。)
上記以外に特殊なテンプレートタイプが存在します。それがpartialとlayoutです。
partialテンプレート
partialは複数のテンプレートで共通の部分等を別ファイルとして作成して共有するためのテンプレートです。好きな名前で作成することができます。
例えば、Copyright部分をpartialテンプレートとして下記のように作成し、別のテンプレートから読み込む事ができます。
copyright.erb:
<p>Copyright FJORD, LLC</p>
entries.erb:
(省略)
<%= partial 'copyright' %>
entry.erb:
(省略)
<%= partial 'copyright' %>
同じ内容が複数のテンプレートで出てくる場合にpartialを使うと楽でしょう。
layoutテンプレート
もう一つのlayoutテンプレートはpartialとは逆に、テンプレートの一部分を共有するのではなく、外枠の殆どを共有するイメージです。
layout.erb:
<h1 id="header">Title</h1>
<%= yield %>
<div id="footer">Powered by Lokka</div>
entry.erb:
<h2>Post Title 1</h2>
<div class="body">body ...</div>
yieldの部分にentryやentriesのテンプレートの結果が全部入るイメージです。layoutテンプレートはWordPressなどには無い機能なので多少取っ付きづらいですが、テンプレートの大部分を共有できる非常に便利な機能で、上手く使うとテーマコーディングが大幅に楽になります。数多くのフレームワークに採用されている機能なので是非とも活用してみてください。