投稿

Jekyllにはブログ機能が組み込まれています。ブログの投稿をテキストファイルとして記述すると、Jekyllがそれをブログに変換するために必要なすべてを提供します。

投稿フォルダ

_posts フォルダは、ブログの投稿を保存する場所です。通常、投稿はMarkdownで記述しますが、HTMLもサポートされています。

投稿の作成

投稿を作成するには、次の形式で _posts ディレクトリにファイルを追加します

YEAR-MONTH-DAY-title.MARKUP

ここで、YEAR は4桁の数字、MONTHDAY はどちらも2桁の数字、MARKUP はファイルで使用されている形式を表すファイル拡張子です。たとえば、以下は有効な投稿ファイル名の例です。

2011-12-31-new-years-eve-is-awesome.md
2012-09-12-how-to-write-a-blog.md

すべてのブログ投稿ファイルは、通常レイアウトやその他のメタデータを設定するために使用されるフロントマターで始まる必要があります。簡単な例では、これは空でもかまいません。

---
layout: post
title:  "Welcome to Jekyll!"
---

# Welcome

**Hello world**, this is my first Jekyll blog post.

I hope you like it!
プロのヒント™:他の投稿へのリンク

サイトのパーマリンクスタイルが変更されたときにURLが壊れる心配をすることなく、他の投稿にリンクするには、post_url タグを使用します。

文字セットに注意してください

コンテンツプロセッサーは、特定の文字を見栄え良くするために変更できます。たとえば、Redcarpetのsmart拡張機能は、標準のASCII引用符をカーリーなUnicode引用符に変換します。ブラウザでこれらの文字を正しく表示するには、レイアウトの<head><meta charset="utf-8">を含めることで、charsetメタ値を定義します。

画像とリソースの組み込み

ある時点で、テキストコンテンツと一緒に画像、ダウンロード、その他のデジタルアセットを組み込みたいと思うでしょう。一般的な解決策の1つは、プロジェクトディレクトリのルートに assets のようなフォルダを作成し、そこに画像、ファイル、またはその他のリソースを配置することです。次に、任意の投稿内から、サイトのルートをインクルードするアセットのパスとして使用してリンクできます。これを行う最適な方法は、サイトの(サブ)ドメインとパスの構成方法によって異なりますが、以下は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>

投稿の表示方法(および場所)とサイトの構造を完全に制御できます。詳細については、Jekyllでのテンプレートの仕組みについて詳しく読む必要があります。

上記の for ループ内でのみ post 変数が存在することに注意してください。現在レンダリング中のページ/投稿の変数(for ループを含む投稿/ページの変数)にアクセスする場合は、代わりに page 変数を使用してください。

タグとカテゴリ

Jekyllは、ブログ投稿のタグカテゴリを第一級でサポートしています。

タグ

投稿のタグは、単一のエントリの場合はキー tag、複数のエントリの場合は tags を使用して、投稿のフロントマターで定義されます。
Jekyllはキー tags にマッピングされた複数の項目を想定しているため、空白が含まれている場合、文字列エントリを自動的に分割します。たとえば、フロントマター tag: classic hollywood は単一のエンティティ "classic hollywood" に処理されますが、フロントマター tags: classic hollywood はエントリの配列 ["classic", "hollywood"] に処理されます。

選択したフロントマターキーに関係なく、JekyllはLiquidテンプレートに公開されている複数形のキーにマッピングされたメタデータを格納します。

現在のサイトに登録されているすべてのタグは、site.tags を介してLiquidテンプレートに公開されます。ページで site.tags を反復処理すると、2つの項目を含む別の配列が生成されます。最初の項目はタグの名前で、2番目の項目はそのタグを持つ投稿の配列です。

{% 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 %}

カテゴリ

投稿のカテゴリは、上記のタグと同様に機能します。

  • キー category または categories(タグと同じロジックに従います)を使用して、フロントマターを介して定義できます。
  • サイトに登録されているすべてのカテゴリは、site.categories を介してLiquidテンプレートに公開され、(上記のタグのループと同様に)反復処理できます。

ただし、カテゴリとタグの類似性はここで終わりです。

タグとは異なり、投稿のカテゴリは、投稿のファイルパスで定義することもできます。_posts より上の任意のディレクトリは、カテゴリとして読み込まれます。たとえば、投稿がパス movies/horror/_posts/2019-05-21-bride-of-chucky.markdown にある場合、movieshorror はその投稿のカテゴリとして自動的に登録されます。

投稿にカテゴリを定義するフロントマターもある場合、まだ存在しない場合は、既存のリストに追加されるだけです。

カテゴリとタグの最大の違いは、投稿のカテゴリが、タグができないのに対し、投稿の生成されたURLに組み込むことができるということです。

したがって、フロントマターに category: classic hollywood があるか、categories: classic hollywood があるかによって、上記の投稿例のURLはそれぞれ movies/horror/classic%20hollywood/2019/05/21/bride-of-chucky.html または movies/horror/classic/hollywood/2019/05/21/bride-of-chucky.html になります。

投稿の抜粋

投稿のコンテンツのスニペットには、投稿の excerpt 変数を使用してアクセスできます。デフォルトでは、これは投稿のコンテンツの最初の段落ですが、フロントマターまたは _config.ymlexcerpt_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>

下書き

下書きは、ファイル名に日付のない投稿です。それらはまだ作業中で、まだ公開したくない投稿です。下書きを使い始めるには、サイトのルートに _drafts フォルダを作成し、最初のドラフトを作成します

.
├── _drafts
│   └── a-draft-post.md
...

下書き付きでサイトをプレビューするには、--drafts スイッチを使用して jekyll serve または jekyll build を実行します。それぞれに日付としてドラフトファイルの変更時間が割り当てられるため、現在編集中のドラフトが最新の投稿として表示されます。