为了保持清晰,我希望将子页面的所有模板文件保存在名为 _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来重现这个问题 .
1 回答
调用
page.merge
时会引发错误 . 因为:site.pages
已经是[页面] [1]的一个特殊组,用页面集合替换它并不特别好 . 完成后,您不再能够通过site.page
访问原始页面,而只能访问新集合的元素 .在集合项上调用
page.merge
时,Liquid尝试调用需要参数的Jekyll::Drop::merge
方法,而不是前面事项中设置的merge
属性 .解决方案:不要将页面设置为集合 .