2016-02-16 4 views
1

Я пытаюсь установить переменную Jekyll (Liquid) на моей странице контента и подвергнуть эту переменную и ее содержимое в включенном шаблоне Jekyll. В этом случае я хочу авторизовать содержимое главной страницы и содержимое боковой панели в одном файле MD, но контролировать инъекцию указанного содержимого.Передача переменных Jekyll «вверх» область

Вот моя установка ..

_layouts/default.html

<div>{{ content }}</div> 
<div class="side-bar">{% include sidebar.html sidebarContent=sidebar %} 

_includes/sidebar.html

{{ include.sidebarContent }} 

страницы/мой-контент-страницы .md

---- 
layout:default 
---- 

This is the main content portion's content. 

{% capture sidebar %} 
This is the sidebar content 

* one 
* two 
{% endcapture %} 

Кажется, что нет возможности передать переменную «боковой панели» вверх по области; Кажется, я могу это спустить. Все, что я хочу сделать, - это разделить создание контента на одну страницу (состоящую из 2 отдельных областей: Контент и Боковая панель) и не вводить маркировку макета в мои «контентные» файлы (также как файлы MD).

Если есть способ, я могу разбить их на разные MD-файлы, и я также буду открыт для этого ... например.

my-page.md 
my_page_sidebar.md 

или

my_page/index.md 
my_page/sidebar.md 

У меня есть некоторый запас в этом, как им здания с использованием страниц не сообщения.

ответ

1

На странице вы можете получить данные от front matter и content сами, когда находитесь в макете. Таким образом доступны только page.something переменных.

Но, нет никакого способа capture или assign в содержании страницы и получить полученную переменную из макета.

Вы можете попробовать сохранить свою боковую панель в своем переднем деле, но это может быть сложно.

Одним из решений может быть разделение содержимого с боковой панели с чем-то вроде excerpt separator, используемого сообщениями.

В _config.yml установите

content_separator: "<!--separator-->" 

В странице:

This is the main content portion's content. 

{{ site.content_separator }} 

This is the sidebar content 

* one 
* two 

В шаблоне:

{% assign contentSplitted = content | split: site.content_separator %} 
{% assign myContent = contentSplitted | first %} 
{% assign navbar = contentSplitted | last %} 

<div>{{ myContent }}</div> 
<div class="side-bar">{{ navbar }}</div> 

Примечание Я использую myContent, как content переменная уже используется.

+0

Ничего себе! Мне понравилась эта идея @DavidJacquel! Очень вдохновляюще! :) –

+1

Прохладный. Но я думаю, что вы можете отделить контент от навигации другим способом. Почему именно вы смешиваете контент и навигацию? Это в навигации по страницам? –

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