在Jekyll中使用子页面集合会导致Liquid Exception

loading...


0

为了保持清晰,我希望将子页面的所有模板文件保存在名为 _pages 的目录中 . 由于Jekyll忽略了以 _ 开头的所有目录,我需要将以下内容添加到我的 _config.yml

include:
  - _pages

即使这已经很好地工作,但是实现相同结果的更方便的方法是对所有子页面使用collection . 这样,在定义共享布局或元数据等默认值时,子页面可以使用 type: pages 进行定位 .

collections:
  pages:
    output: true

虽然上面的工作类似于另一个项目的魅力,但在将其用于当前项目时会引发以下异常:

Liquid Exception: wrong number of arguments (given 0, expected 1) in /_layouts/content.html

我不知道从include文件夹方法切换到收集方法会如何产生此错误 . 更奇怪的是该消息不提供行号 .

文件 content.html 用作子页面的主要布局,并获得以下内容:

---
layout: default
---

<div class="o-page o-page--pushed {{ page.style }}">
  {% include navigation.html %}

  <main class="o-page__content{% if page.merge %} u-pv-0x{% endif %}">
    {{ content }}
  </main>

  {% include footer.html %}
</div>

EDIT: 我创建了一个repository来重现这个问题 .

loading...

1回答

  • 2

    调用 page.merge 时会引发错误 . 因为:

    • site.pages 已经是[页面] [1]的一个特殊组,用页面集合替换它并不特别好 . 完成后,您不再能够通过 site.page 访问原始页面,而只能访问新集合的元素 .

    • 在集合项上调用 page.merge 时,Liquid尝试调用需要参数的 Jekyll::Drop::merge 方法,而不是前面事项中设置的 merge 属性 .

    解决方案:不要将页面设置为集合 .

评论

暂时没有评论!