Jekyll“液体语法错误”,限制为

时间:2017-06-28 10:57:52

标签: jekyll liquid

我无法弄清楚这里出了什么问题,我还有其他一些具有相同结构的代码但它们没有返回此错误。

以下是我遇到问题的HTML文件(item.html)中的流动代码:

{% assign item-collection = site.item-collection | sort: 'date' | reverse %}
{% for item in item-collection %}
  {% if item.featured == true limit: 3 %}
    <div class="item">
    </div>
  {% endif %}
{% endfor %}

这是正在处理的'item'(item.md);

---
layout: item
date: 2017-06-08 00:00:00
title: item 1
featured: true
tags:
---

这是终端返回的错误:

Regenerating: 1 file(s) changed at 2017-06-28 22:41:16     Liquid Warning: Liquid syntax error (line 30): Expected end_of_string but found id in "item.featured == true limit: 3" in /_layouts/item.html ...done in 1.337976 seconds.

如果我将日期留空,则不会发生此错误,但只要输入了某些内容,此错误就会停止构建网站。

如果我从液体代码中删除'limit:3',错误也会消失,但我需要这个限制。

关于我做错的任何想法? 提前谢谢!

1 个答案:

答案 0 :(得分:2)

limitfor代码参数。它以特定索引退出for循环。

if标记之后使用它并不意味着任何事情,并且在处理它时会让Jekyll感到困惑。

limit标记移动到for循环行,它应该只迭代前三项。

{% for item in item-collection limit: 3 %}
 {% if item.featured  %}

基于评论更新

  • 按精选代码过滤商品

    {% assign item-collection = site.item-collection | where_exp:"item","item.featured == true" %}
    
  • 按日期对结果进行排序

    {% assign item-collection = item-collection | sort: 'date' | reverse %}
    
  • 限制列表仅限于3个精选帖子

    <ul>
    {% for item in item-collection limit:3 %}
    <li>{{item.date}} - {{item.title}}</li>
    {% endfor %}
    </ul>
    

汇总:

{% assign item-collection = site.item-collection | where_exp:"item","item.featured == true" %}

{% assign item-collection = item-collection | sort: 'date' | reverse %}

<ul>
{% for item in item-collection limit:3 %}
<li>{{item.date}} - {{item.title}}</li>
{% endfor %}
</ul>