首页 文章

将Jekyll变量传递到“向上”范围

提问于
浏览
1

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

这是我的设置..

_layouts/default.html

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

_includes/sidebar.html

{{ include.sidebarContent }}

pages/my-content-page.md

----
layout:default
----

This is the main content portion's content.

{% capture sidebar %}
This is the sidebar content

* one
* two
{% endcapture %}

似乎没有办法在范围内传递“侧边栏”变量UP;我似乎只能把它传下来 . 我想要做的就是将单个页面的内容创作(由2个离散区域组成;内容和侧栏)分开,并避免将布局标记引入我的“内容”文件(也称为MD文件) .

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

my-page.md
my_page_sidebar.md

要么

my_page/index.md
my_page/sidebar.md

我有一些余地,因为我 Build 了使用页面而不是帖子 .

1 回答

  • 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 变量已被使用 .

相关问题