4

基本的なレイアウトページテンプレートがあります。

---
layout: default
---

<header class="sidebar">
    {{ page.title }}
</header>

<section class="content">
    {{ content }}
</section>

<section>これをページテンプレートとして使用する私のページは、ブロックに入れられる単なるMarkdownです。

すべてのページコンテンツを1つのファイルに保持する方法を探していますが<header>、ページテンプレートからタグに配置される個別のコンテンツを定義できるようにしています。

これを行い、すべてのページのコンテンツを1つのファイルに保持する方法はありますか?

4

2 に答える 2

6

_includes/これを行うには、分離してディレクトリで再利用するコンテンツを定義します。

次に、たとえば次のように呼び出して{% include file.ext %}、ファイル名を含めます。ファイル名のを含める_includes/file.ext(ほとんどコピーして貼り付けた場合と同じように)。

ここ_includesのJekyllドキュメントのに関連するセクションを参照してください。

于 2012-06-25T02:13:00.280 に答える
5

YAML Front Matterを使用して、ページの追加コンテンツを直接保存できます。これは、カスタムのキー/値変数を作成することによって行われます。レイアウト/テンプレートは、液体タグを使用して、セカンダリコンテンツが利用可能かどうかを確認します。もしそうなら、それは出力を取得します。それ以外の場合、セクションはスキップされます。

myvar1呼び出されたカスタム変数が設定されているかどうかを確認するレイアウトテンプレートの例を次に示します。

---
layout: default
---

<header class="sidebar">

    <h2>{{ page.title }}</h2>

    {% if page.myvar1 %}
        <p>Secondary content here: {{ page.myvar1 }}</p>
    {% endif %}

</header>

<section class="content">
    {{ content }}
</section>

注:元の例と一致させるために、このレイアウトファイルは親の「デフォルト」レイアウトを呼び出します。この例では、上記は「_layouts/nested_layout.html」というレイアウトファイルにあります。

新しいスロットを使用するには、次のmyvar1ように変数をフロントマターに追加します。

---
layout: nested_layout
title: This is the post test layout
myvar1: More here <strong>including bold text</strong>.
---

And here is the page content: The quick brown fox jumps over the lazy dog.

そのページが処理されると、セカンダリコンテンツが表示されます。を持たない別のページを作成するmyvar1と、テンプレートのその部分には何もレンダリングされません。

必要な数のカスタム変数をページに追加できます。この例に示すように、値にはHTMLを含めることができます。(Jekyll 0.11.2で動作します。)追加したいコードがたくさんある場合(1行に簡単に収まるものではなく)、または同じコンテンツをオンにできるようにしたい場合/複数のページでオフの場合、カスタム変数をフラグとして使用できます。次に、{%if%}タグで、値が設定されている場合はインクルードを呼び出します。

于 2012-06-25T16:32:41.680 に答える