Ответ 1
Вы можете использовать переднюю тему 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 не позволяет использовать переменные в include, поэтому, если вы хотите включить что-то условно, вам понадобится список всех доступных компонентов, а затем создайте все условия для вставки одного или другой, когда они вам понадобятся.
Другим решением является разделение всего макета на включенные и создание макетов с различными уровнями сложности - таким образом вы могли бы установить любой из этих основных макетов для сообщения, а затем написать любой дополнительный код с включая любые блоки, которые вам понадобятся из основных макетов, поэтому вы можете выглядеть так:
---
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>
тогда вы можете вызвать такую переменную из головы: {{ page.extra_head }}
и получить любой контент, который вы там разместили. Тем не менее, вы не можете использовать какие-либо жидкие метки внутри YAML, но затем вы можете использовать любые теги YAML для таких переменных, чтобы вы могли их убрать или заменить какие-либо другие строки простым фильтром замены.
И если ничто из них не подойдет вам, тогда Jekyll вам не подойдет - как я написал в комментарии, Jekyll - это всего лишь механизм блога, и вы не должны ждать, пока он будет сложным, как XSLT.