【发布时间】:2018-12-25 13:59:51
【问题描述】:
有没有办法检查当前页面是否属于集合?如果是这样,我可以查看收藏的标签是什么吗?
背景故事: 我想要实现的是为属于一个集合的所有页面显示不同的布局。使用这种新布局,我想显示一个侧面导航(某种“另见”),其中列出了当前站点所属的集合中的所有页面。
如果我的问题被证明是愚蠢的 - 请原谅我,我是 jekyll 的新手,我真的试图自己找出答案。
【问题讨论】:
标签: collections jekyll liquid
有没有办法检查当前页面是否属于集合?如果是这样,我可以查看收藏的标签是什么吗?
背景故事: 我想要实现的是为属于一个集合的所有页面显示不同的布局。使用这种新布局,我想显示一个侧面导航(某种“另见”),其中列出了当前站点所属的集合中的所有页面。
如果我的问题被证明是愚蠢的 - 请原谅我,我是 jekyll 的新手,我真的试图自己找出答案。
【问题讨论】:
标签: collections jekyll liquid
page.collection 返回文档所属集合的标签。所以我猜你想做这样的事情:
{% if page.collection == 'COLLECTION_LABEL' %}
NEW LAYOUT
{% else %}
OLD LAYOUT
{% endif %}
要访问集合中的页面,您可以使用带有site.COLLECTION_LABEL 或site[COLLECTION_LABEL] 的标签(如果它是变量,则需要[])。比如:
{% for page in site[page.collection] %}
<a href="{{ page.url }}">{{ page.title }}</a>
{% endfor %}
【讨论】:
site[page.collection],因为page.collection 只是标签。我刚刚更新了答案
{% assign page.layout = 'my_layout' %},因为页面对象被冻结,它不能被改变。您的代码可以做的是有条件地使用包含:{% if page.collection == 'toto' %} {% include inc_1.html %} {% else %} {% include inc_2.html %} {% endif %} 虽然,您的答案可以解决问题,但它并没有解决布局问题。
任何集合文档都有一个page.collection 变量,它是集合标签。
但是,如果你想将一个特定的布局关联到一个集合,你可以使用default configuration:
defaults:
-
scope:
type: mycollection
values:
layout: a_custom_layout
anyvar: a_custom_var
【讨论】: