YAMLフロントマターを使用して、投稿/ページに必要なものを調整できます。そこに提供する情報は、レイアウトからアクセスでき、page
変数の下または特定の投稿の下にそれらのリストに含まれます。
これはあなたのケースの解決策のように聞こえます:次のようなYAMLフロントマターを使用できます:
---
extra_css:
- foo.css
- dir/bar.css
- /s/baz.css
---
そして、次のようにレイアウトのヘッダーでこれを使用します。
{% for css_name in page.extra_css %}
<link rel="stylesheet" href="{{ css_name }}">
{% endfor %}
このようにして、YAMLフロントマターの投稿で提供するデータに基づいて任意のロジックを追加できます。
これらのロジックの一部をモジュールに抽象化する場合は、インクルードをハックして、インクルードの前に変数を割り当て、内部で使用することができます。これは、Jekyll Bootstrapプロジェクトでどのように作成されたかを説明するリンクです(ところで、そのサイトにはJekyllに関する多くの素晴らしい情報があります)。
そして、はい、Jekyllはインクルードでの変数の使用を許可していません。したがって、条件付きで何かをインクルードしたい場合は、どこかに利用可能なすべてのインクルードのリストが必要になります。それらが必要になります。
もう1つの解決策は、レイアウト内のすべてをインクルードに分割し、さまざまなレベルの複雑さのレイアウトを作成することです。このようにして、投稿用にこれらの基本レイアウトのいずれかを設定し、基本から必要なブロックのインクルードを使用して追加のコードを記述できます。レイアウトなので、投稿は次のようになります。
---
layout: custom
---
<aside class="sidebar">
{% include comments.html %}
{% include sidebar.html %}
</aside>
<div class="content" role="main">
Foo bar baz
</div>
そこで、ページの基本的なレイアウトを含まず、サイドバーとコメントを含まないカスタムレイアウトを使用できるため、投稿ごとに必要なレイアウトのレベルを決定し、再定義する必要があるものを再定義できます。
また、さまざまな場所を微調整する必要があるが、内容が不明な場合は、次のようなブロックでYAMLフロントマターを使用できます。
extra_head: |
<style>
* {background: red}
</style>
次に、そのような変数をheadから呼び出すことができます。{{ page.extra_head }}
そして、そこに配置したコンテンツを取得します。ただし、YAML内で液体タグを使用することはできませんが、そのような変数で任意のYAMLタグを使用できるため、単純な置換フィルターを使用して、それらをマークダウンしたり、内部の文字列を他のものに置き換えたりできます。
そして、それらのどれもあなたに合わない場合、Jekyllはあなたに合いません—コメントで書いたように、Jekyllは単なるブログエンジンであり、XSLTのように複雑になるのを待つべきではありません。