将网站集从页面传递到jekyll布局

问题描述 投票:0回答:1

我正在尝试将一个网站集传递到页面的布局中,以便能够根据传递的部分来创建导航菜单。

在我的_config.yml中

collections:
  tt:
    output: true

在我的index.md页面:

---
layout: mylayout
title: My Great Homepage
icon: fa-home
order: 1
sec: "{{site.tt}}"
---

在我的布局中:

---
layout: mylayout
---
{%- assign _sections = page.sec | flatify -%}
{%- include header.html scrolly_nav=_sections -%}

<!-- Main -->
<div id="main">
    {{page.sec | flatify}} <!-- just to debug -->
</div>

Flatify在_plugins / flatify.rb下:

module Jekyll
    module ExpandNestedVariableFilter
      def flatify(input)
        Liquid::Template.parse(input).render(@context)
      end
    end
  end

  Liquid::Template.register_filter(Jekyll::ExpandNestedVariableFilter)

在我的布局中,使用{%- assign _sections = site.sec | flatify -%}效果很好,但是当我将集合从页面传递到布局时,它不起作用。

如果我执行完全相同的操作,而不是将site.title从页面传递到布局,则一切正常。但是,当我尝试通过收藏夹时,它不起作用。

感谢您的帮助。

ruby jekyll liquid jekyll-theme
1个回答
0
投票

您的flatify插件很棒,但是不能反映现实生活。

您不能在前端使用液体var,因为它们没有被解析。

在您页面的最前面:

site.tt

然后,从页面或布局中,您只需调用:

---
sec: "tt"
---

如果要调试,可以使用{%- assign _sections = site[page.sec] -%} {%- include header.html scrolly_nav=_sections -%} 过滤器,该过滤器仅输出变量内容。

inspect
© www.soinside.com 2019 - 2024. All rights reserved.