Posts(ポスト)
ブログはJekyllに組み込まれています。あなたがブログポストをテキストファイルで書き、Jekyllがそれをブログにします。
ポストフォルダ
_postsフォルダがブログポストを入れるフォルダです。ポストを書くのには、Markdown、HTMLどちらもサポートしています。
ポストを作る
ポストを作るには、_postsディレクトリに以下のフォーマットでファイルを追加します。
YEAR-MONTH-DAY-title.MARKUP
YEARは4桁を、MONTHとDAYは2桁を使用します。MARKUPはファイルで使用している形式を表す拡張子です。
以下に有効なファイル名の例を示します。
2011-12-31-new-years-eve-is-awesome.md
2012-09-12-how-to-write-a-blog.md
全てのブログポスト用ファイルはfront matterで開始します。通常ここには使用するレイアウトやその他メタデータを記述します。
シンプルな例として、何も書かないも可能です。
---
layout: post
title: "Welcome to Jekyll!"
---
# Welcome
**Hello world**, this is my first Jekyll blog post.
I hope you like it!
ProTip™: 他のポストへのリンク
post_urlタグを使用することで、パーマリンクの形式を変更したときにURLが壊れる心配なく、他のポストへリンクできます。
文字コードに注意してください
コンテンツプロセッサはより美しく見せるために、特定の文字を変更できます。例えば、Redcarpetのsmart extensionは、標準のASCII引用符をUnicodeの中括弧に変換します。ブラウザがこれらの文字を正しく表示するために、レイアウトの<head>に<meta charset="utf-8">の文字コード定義メタタグを入れてください。
イメージやリソースを含める
いくつかのポイントとして、テキストコンテンツに画像やダウンロード、その他デジタルファイルを入れたくなるでしょう。一般的な方法として、プロジェクトディレクトリのrootフォルダにassetsのようなイメージや他のリソースを入れておくためのフォルダを作ります。そうすれば、どのようなポストでもサイトのrootパスから挿入するアイテムへのリンクを使用することができます。実行するには、サイトの(サブ)ドメインとパスの構成により方法が異なりますが、シンプルなMarkdownの例を示します。
ポストに画像を入れる:
... which is shown in the screenshot below:

読者がダウンロードするためのPDFリンク:
... you can [get the PDF](/assets/mydoc.pdf) directly.
ポストのインデックスを表示する
他のページにポストのインデックスを作るのは、Liquidとそのタグのおかげで簡単です。
ここに、ブログポストへのリンクのリストを作り方のシンプルな例を示します。
<ul>
{% for post in site.posts %}
<li>
<a href="{{ post.url }}">{{ post.title }}</a>
</li>
{% endfor %}
</ul>
ポストをどのように(どこで)表示するか、サイトの構成をどのようにするかは、全てコントロールできます。もっと知りたい場合、Jekillのテンプレートの働き方を更に読むべきです。
postが上記のforループ内にのみ存在することに注意してください。変換対象のポストやページの変数(forループの中にあるポストやページの変数)にアクセスしたいときは、代わりにpage変数を使用してください。
タグとカテゴリ
Jekyllはブログポストのタグとカテゴリをサポートしています。
タグ
ポストのタグは一つだけならtag、複数ならtagsキーを利用してfront matterで指定します。
Jekyllはtagsに複数指定されていれば、自動で空白で区切ります。例えば、tag: classic hollywoodという指定であればタグは単一の"classic hollywood"として処理され、tags: classic hollywoodの場合は["classic", "hollywood"]という配列として処理されます。
front matterで選択したキーにかかわらず、JekyllはLiquidテンプレートで参照できる複数形のキーとしてマップしメタデータに保存します。
全てのタグはLiquidテンプレートではsite.tagsで参照できます。ページ上で、site.tagsからは異なる二つのアイテムが得られます。一つ目のアイテムはタグの名前で、二つ目はそのタグを持つホストの配列です。
{% for tag in site.tags %}
<h3>{{ tag[0] }}</h3>
<ul>
{% for post in tag[1] %}
<li><a href="{{ post.url }}">{{ post.title }}</a></li>
{% endfor %}
</ul>
{% endfor %}
カテゴリ
ポストのカテゴリは上述のタグと同様の働きをします:
- front matterの
categoryやcategoriesキーで指定します。(タグと同じロジックに従います) - サイトに登録された全てのカテゴリは(上述のタグのforループと同様に)繰り返し処理可能な
site.categories変数としてLiquidテンプレートに提供されます。
ただし、カテゴリとタグの類似性はこれで終わりです。
タグとは異なり、カテゴリはポストのファイルパスで指定することも可能です。
_post内のディレクトリはカテゴリとして扱われます。例えば、ポストのパスがmovies/horror/_posts/2019-05-21-bride-of-chucky.markdownなら、自動でmoviesとhorrorがそのポストのカテゴリとなります。
投稿にもカテゴリを定義するfront matterがある場合、パスで指定されたものでなければ、既存のリストに追加されます。
カテゴリとタグの特徴的な違いは、投稿のカテゴリが投稿の生成されたURLに組み込むことが可能ですが、タグはできません。
front matterでcategory: classic hollywoodとcategories: classic hollywoodと指定する場合は挙動が異なります。この例では前者はmovies/horror/classic%20hollywood/2019/05/21/bride-of-chucky.htmlに、後者はmovies/horror/classic/hollywood/2019/05/21/bride-of-chucky.htmlとなります。
ポストの抜粋
ポストでexcerpt変数を使用することで、抜粋にアクセスすることができます。デフォルトはポストの最初の段落ですが、front matterや_config.ymlでexcerpt_separatorを設定することでカスタマイズできます。
---
excerpt_separator: <!--more-->
---
Excerpt with multiple paragraphs
Here's another paragraph in the excerpt.
<!--more-->
Out-of-excerpt
抜粋付きのブログポストのリストを出力する例です:
<ul>
{% for post in site.posts %}
<li>
<a href="{{ post.url }}">{{ post.title }}</a>
{{ post.excerpt }}
</li>
{% endfor %}
</ul>
ドラフト
ドラフトは、ファイル名に日付を含まないポストです。作業中で、まだ公開したくないポストです。ドラフトを立ち上げるには、サイトのrootに_draftsフォルダを作り、最初のドラフトを作成してください。
.
├── _drafts
│ └── a-draft-post.md
...
ドラフトを含むプレビューは、jekyll serveやjekyll buildの実行時に--draftsスイッチをつけてください。ドラフトファイルの日付が割り当てられるため、現在編集中のドラフトは最新のポストとして表示されます。