我无法弄清楚这里出了什么问题,我还有其他一些具有相同结构的代码但它们没有返回此错误。
以下是我遇到问题的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',错误也会消失,但我需要这个限制。
关于我做错的任何想法? 提前谢谢!
答案 0 :(得分:2)
limit
是for
代码参数。它以特定索引退出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>