传递Jekyll变量" up"范围

时间:2016-02-16 20:49:34

标签: jekyll liquid

我正在尝试在我的内容页面中设置一个Jekyll(Liquid)变量,并在包含Jekyll模板中公开该变量及其内容。在这个用例中,我想在单个MD文件中创建主页面内容和侧边栏内容,但是控制所述内容的注入。

这是我的设置..

_layouts / default.html中

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

_includes / sidebar.html

{{ include.sidebarContent }}

信息页/ my-content-page.md

----
layout:default
----

This is the main content portion's content.

{% capture sidebar %}
This is the sidebar content

* one
* two
{% endcapture %}

似乎没有办法通过&#34;侧边栏&#34;变量范围;我似乎只能把它传下来。我想要做的就是将单个页面的内容创作(由2个离散区域组成;内容和侧边栏)分开,并避免将布局标记引入我的内容&#34;文件(又名MD文件)。

如果有办法我可以将它们分解成不同的MD文件,我也可以对此开放... ex。

my-page.md
my_page_sidebar.md

my_page/index.md
my_page/sidebar.md

我有一些余地,因为我正在建立使用网页而不是帖子。

1 个答案:

答案 0 :(得分:2)

在页面中,当您处于布局中时,您可以从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>

注意我使用myContent因为content变量已在使用中。