为了保持清晰度,我希望将子页面的所有模板文件保留在名为_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
我不知道从包含文件夹方法到收集方法的切换如何产生此错误。更奇怪的是,该消息没有提供行号。
文件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>
编辑:我创建了一个repository来重现该问题。
答案 0 :(得分:2)
调用page.merge
时引发错误。因为:
site.pages
已经是pages的特殊群体,用页面集合代替它并不是一个好主意。完成后,您将无法再通过site.page
到达原始页面,而只能访问新集合的元素。page.merge
时,Liquid尝试调用需要自变量而不是在最前面设置的Jekyll::Drop::merge
属性的merge
方法。解决方案:不要将页面设置为集合。