【问题标题】:How to pass a limit parameter to an include using Jekyll's Liquid如何使用 Jekyll 的 Liquid 将限制参数传递给包含
【发布时间】:2020-06-04 19:59:28
【问题描述】:

我的网站上有一组项目,我使用 {% for project in site.projects %} 对其进行迭代并存储在名为 projects-list.html 的包含中。

我想将此集合中的最新项目作为“特色”项目包含在主页上 - 是否可以包含 projects-list 但传入 limit:1 参数以便只显示第一个项目?根据此处找到的 Jekyll 文档,我尝试将参数传递给包含,如下所示:

{% for project in site.projects limit:{{ include.limit }} %}

并像这样引用包含:

{% include projects-list.html limit=1 %}

但这似乎不起作用。这是语法错误还是我遗漏了什么?

【问题讨论】:

    标签: for-loop include jekyll liquid


    【解决方案1】:

    你可以试试第一个

    {% assign projectFeatured = site.projects | first %}
    
    {% for projects in site.projects %} 
      {% include projects-list.html %} 
    {% endfor %}
    
    {% for projects in projectFeatured %}
     {% include projects-list.html %}
    {% endfor %}
    

    虽然我鼓励您在帖子中添加 featured: True 并执行类似操作:

    {% if post.featured == true %}
    
     {% include post.html %}
    
     {% endif %}
    

    https://shopify.github.io/liquid/filters/first/

    【讨论】:

    • 但是我认为没有什么可以迭代的?
    • 如果您限制为一个项目,则无需迭代。只需为列表中的第一个项目分配一个值即可完成工作
    • 这并不能解决我的问题,因为我试图只有一个包含文件——如果我使用这种方法,那么我必须为特色项目有一个单独的文件?
    • 太好了,谢谢!我已经在上面发布了我的解决方案,但我不确定它是否非常有效。感谢您的帮助
    【解决方案2】:

    以下是我当前的解决方案(带有featured: true)添加到帖子frontmatter。这真的很讨厌,但现在似乎可以工作:

    <div class="project-list">
      {% if page.layout == "home" %}
        {% assign projects = site.projects | where: "featured", "true" %}
        {% for project in projects %}
          {% include project/project.html %}
        {% endfor %}
      {% else %}
        {% assign projects = site.projects %}
        {% for project in projects %}
          {% include project/project.html %}
        {% endfor %}
      {% endif %}
    </div>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-04
      • 2015-02-17
      • 1970-01-01
      • 2014-03-25
      • 2011-05-17
      • 1970-01-01
      • 2012-03-28
      • 1970-01-01
      相关资源
      最近更新 更多