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:
![My helpful screenshot](/assets/screenshot.jpg)
読者がダウンロードするための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
スイッチをつけてください。ドラフトファイルの日付が割り当てられるため、現在編集中のドラフトは最新のポストとして表示されます。