Ответ 1
Я не уверен, что это когда-нибудь будет работать в Jekyll. Возможно, я ошибаюсь, но здесь мои рассуждения:
Каждая страница выводится с использованием do_layout в https://github.com/mojombo/jekyll/blob/master/lib/jekyll/convertible.rb
Это работает рекурсивно - он обрабатывает содержимое страницы, затем обрабатывает макет страницы, затем макет макета и т.д. и т.д., передавая переменные YAML в цепочку (поэтому они всегда доступны в родительских шаблонах, {{page.whatever}}).
Это означает, что только те, которые передаются, являются значениями YAML и независимо от значения "содержимого" после того, как оно было обработано Liquid. Я не знаю, как это делается в другом месте, но это кажется несовместимым с идеей блоков, поскольку они потребуют от вас разделить два блока отдельно.
По сути, мне кажется, что проблема в том, что Jekyll уже имеет простую форму наследования - через атрибут "layout", который вы можете предоставить макету. По сути, я думаю, что это совместимо с шаблонами для жидкостей.
Все, что сказал, я не уверен, что вы исчерпали пределы использования YAML, _includes и шаблона. Если вы хотите разместить блоки стиля Django в своем контенте, почему бы просто не сделать что-то вроде этого:
Содержание:
---
title: some title
secondary_content: |
Here is some *secondary* content that will be [markdownified](http://example.com).
It can run to multiple lines and include
* Lists
* Good things
* Etc
---
And here is the main content, as per usual
Шаблон:
<html>
<article>
<h1>{{ page.title }}</h1>
{{ content }}
</article>
<aside>
{{ page.secondary_content | markdownify}}
</aside>
Если вы хотите, чтобы ваши шаблоны были чистыми и имели различный контент для разных типов страниц, вы можете использовать различные варианты:
Шаблон:
<aside>
{% include sidebar_negotiation.html %}
</aside>
_includes/sidebar_negotiation.html:
{% if page.type = 'foo' %}
{% include sidebar_foo.html %}
{% else if page.type = 'bar' %}
{% include sidebar_bar.html %}
{% endif %}
И затем поместите свои типы страниц в эти файлы. Очевидно, вы можете включить его напрямую, но, вероятно, приятно отвлечь его. В число этих включений входят все переменные в YAML.
Если это не победа, вы всегда можете попробовать Hyde: http://hyde.github.com/, который написан на Python, использует Jinja2 (в основном Django шаблоны ++) и делает то же самое.