2012-06-24 4 views
4

У меня есть основной шаблон макета страницы:Джекила - разделение контент на две колонны

--- 
layout: default 
--- 

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

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

Моих страницы, которые используют это в качестве шаблона страницы просто Markdown, что получает положить в <section> блок.

Я ищу способ сохранить все содержимое моей страницы в одном файле, но иметь ее, чтобы я мог определить отдельный контент, который помещается в тег <header> из шаблона страницы.

Есть ли способ сделать это и сохранить все содержимое страницы в одном файле?

ответ

5

Вы можете сделать это, указав контент, который вы хотите разделить и использовать повторно в каталоге _includes/.

Затем вы должны включить его, позвонив, например: {% include file.ext %}, чтобы включить имя файла _includes/file.ext (почти как если бы вы просто скопировали и вставляли его).

См. Раздел, относящийся к _includes в документации Jekyll. here.

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».

Чтобы использовать новый слот, A 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.) Если у вас есть много кода, который вы хотите добавить (вместо того, что легко вписывается в одну строку), или если вы хотите иметь один и тот же контент для включения/off для нескольких страниц, вы можете использовать пользовательскую переменную в качестве флага. Затем в теге {% if%} вы должны вызвать include, если значение установлено.

Смежные вопросы