2016-02-16 53 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 mattercontent本身获取数据,当您在布局中时。所以只有page.something变量可用。

但是,在页面内容中无法通过captureassign从布局中获取结果变量。

您可以尝试将边栏存储在前台,但这可能会非常棘手。

一个解决方案可以是将内容从侧边栏中分离出来,就像帖子使用的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> 

注意我用myContentcontent变量已在使用。

+0

哇!我喜欢这个想法@DavidJacquel!非常鼓舞人心! :) –

+1

很酷。但我认为你可以用其他方式将内容从导航中分离出来。为什么,确切地说,你是混合内容和导航?这是一个页面导航? –