web-dev-qa-db-ja.com

サイトインデックスでJekyllマークダウンページをレンダリングする方法

私はおそらく何か簡単なものを見逃していますが、Jekyllをローカルでテストする方法はありません。

GitHubページを使用してJekyllをレンダリングしています。まず、1つのマークダウンページからメインindex.htmlのマークダウンコンテンツのみをレンダリングします。

構造は次のとおりです。

Index.html

---
layout: default
---

_ layouts
-default.html

//html stuff..
<section>

{{page.content}}

</section>

ルートフォルダーには、content.mdという名前のページがあります。{{page.content}}のレイアウトはレンダリングされますが、液体タグセクションは空白です。

content.mdをレンダリングするにはどうすればよいですか?

例: https://github.com/wycks/wordpress-gears-jekyll

36
Wyck

ここでいくつかのことが行われています。

  1. 以下の代わりに、_layouts/default.htmlファイル(およびその他の_layoutsディレクトリファイル)で:

    {{ page.content }}
    

    あなたが使用する必要があります:

    {{ content }}
    
  2. Jekyllでは、サイトのルートレベル_includesディレクトリのファイルのみを含めることができます。そのため、content.mdをルートからそのディレクトリに移動する必要があります(まだ存在しない場合は作成します)。

  3. 最後に、実際にindex.htmlファイルからインクルードファイルを呼び出す必要があります。これを行うには、index.htmlファイルのコンテンツを次のように変更します。

    ---
    layout: default
    ---
    
    {% include content.md %}
    

これにより、探している動作が設定されます。


他に2つのことを指摘します。

  1. インデックスファイルの拡張子を.htmlから.mdに変更するとうまくいくことがあります。ただし、重要な注意事項:ページネーションが必要な場合は、.htmlを使用する必要があります。 Jekyll Pagination documentation によると、この機能はファイルの名前がindex.htmlの場合にのみ機能します。

  2. インデックスファイルで実行しているのが、そのページにのみ存在するインクルードを呼び出している場合、単にコンテンツをインデックスファイルに直接配置するだけでも十分です。

39
Alan W. Smith

includeでは、_includes/の直下にのみファイルを含めることができます。 include_relative もあり、パスを使用して他の場所からインクルードできます。ただし、インクルードは指定されたファイルに対して相対的でなければなりません。

{% include_relative somedir/footer.html %}

解決できないインクルードメソッドには1つの問題があります。インクルードするファイルに問題がある場合、Jekyllはそれを削除しません。そのため、「タイトル」など、特定のメタデータを含めるためにフロントマターを使用することはできません。もちろん、変数-{% assign title = "My Title" %}を使用できますが、それは同等ではありません。インクルードするものをコレクションの一部にしたい場合や、独立してレンダリングしたい場合は、前処理が必要です。

1
spinkus