【问题标题】:Jekyll – Check if page belongs to a collectionJekyll – 检查页面是否属于集合
【发布时间】:2018-12-25 13:59:51
【问题描述】:

有没有办法检查当前页面是否属于集合?如果是这样,我可以查看收藏的标签是什么吗?

背景故事: 我想要实现的是为属于一个集合的所有页面显示不同的布局。使用这种新布局,我想显示一个侧面导航(某种“另见”),其中列出了当前站点所属的集合中的所有页面。

如果我的问题被证明是愚蠢的 - 请原谅我,我是 jekyll 的新手,我真的试图自己找出答案。

【问题讨论】:

    标签: collections jekyll liquid


    【解决方案1】:

    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 只是标签。我刚刚更新了答案
    • 无法从流动逻辑定义集合的文档布局。提供的代码只能处理包含。
    • @DavidJacquel 我不确定你的意思,你能详细说明一下吗?
    • 要设置布局,您可以在文档的前端或默认配置中进行。无法从文档内容设置布局。你不能说{% assign page.layout = 'my_layout' %},因为页面对象被冻结,它不能被改变。您的代码可以做的是有条件地使用包含:{% if page.collection == 'toto' %} {% include inc_1.html %} {% else %} {% include inc_2.html %} {% endif %} 虽然,您的答案可以解决问题,但它并没有解决布局问题。
    【解决方案2】:

    任何集合文档都有一个page.collection 变量,它是集合标签。

    但是,如果你想将一个特定的布局关联到一个集合,你可以使用default configuration:

    defaults:
      -
        scope:
          type: mycollection
        values:
          layout: a_custom_layout
          anyvar: a_custom_var
    

    【讨论】:

      猜你喜欢
      • 2015-05-10
      • 2021-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-24
      相关资源
      最近更新 更多