Jekyllでブランクプロジェクトを作り、レイアウトを使ってみます。
複数のページを作る時は同じようなレイアウトになることが多いですが、Jekyllではレイアウトをレイアウトファイルとして部品化できます。テンプレートのようなものです。方法を見ていきます。
Step1. ブランクプロジェクトを作る
プロジェクト名はmy-site
にします。
$ jekyll new my-site --blank
次のコマンドを実行して、localhost:4000
を開きます。以降は変更が自動的にビルドされます。
$ cd my-site $ jekyll serve
Step2. ベタでHTMLを書く
とりあえずレイアウト等は使わずに、はじめから生成されているindex.htmlに普通にHTMLを書いてみます。
@index.html
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>my-site</title> </head> <body> <header>header</header> content <footer>footer</footer> </body> </html>
自動ビルド後は、_site
フォルダに上と同じindex.html
が生成されているはずです。
ブラウザで表示すると次のような感じです。
Step3. レイアウトを使う
本題のレイアウトです。
_layouts
フォルダに、default.html
を作成し、Step2で作ったHTMLをカットアンドペーストします。違いがわかるように文字を少し変えています。
@_layouts/default.html
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>my-site 2</title> </head> <body> <header>header 2</header> content 2 <footer>footer 2</footer> </body> </html>
もともとのindex.htmlは、中身を全て削除し、---
で囲んだ書式でレイアウトを指定します。
@index.html
--- layout: default ---
これでindex.htmlのレイアウトとして、_layouts/default.html
が使われます。
ブラウザで表示してみると、次のようにレイアウトの内容で表示できました。
Step3. コンテンツを使う
レイアウトにおいて、ページごとに異なるコンテンツを表示させるには、{{ content }}
を使います。
@_layouts/default.html
略 <body> <header>header 2</header> {{ content }} <footer>footer 2</footer> </body> 略
“content 2″を削除し、{{ content }}
を追加しました。
index.html側はレイアウト指定の下にコンテンツを記述します。
@index.html
--- layout: default --- hello world!
ブラウザで表示すると、index.htmlに記述したコンテンツが表示されているのがわかります。
Step4. インクルードを使う
複数のレイアウトを作ると共通部分がでてきます。共通部分は_includes
フォルダに部品化できます。
まず、レイアウトファイルの共通部分を_includesフォルダ内のファイルに移します。例えば、headタグ
部をhead.html
に移します。
@_includes/head.html
<head> <meta charset="utf-8"> <title>include head</title> </head>
もともとのレイアウトファイルからインクルードファイルを呼び出すには{% include [ファイル名] %}
を使います。
@_layouts/default.html
<!-- <!DOCTYPE html> <html> {% include head.html %} <body> 略