【发布时间】:2012-02-21 14:37:24
【问题描述】:
我正在使用 Jekyll/Liquid 构建一个静态站点(没有博客)。我希望它有一个自动生成的导航菜单,列出所有现有页面并突出显示当前页面。这些项目应按特定顺序添加到菜单中。因此,我在页面的 YAML 中定义了一个weight 属性:
---
layout : default
title : Some title
weight : 5
---
导航菜单的构造如下:
<ul>
{% for p in site.pages | sort:weight %}
<li>
<a {% if p.url == page.url %}class="active"{% endif %} href="{{ p.url }}">
{{ p.title }}
</a>
</li>
{% endfor %}
</ul>
这会创建指向所有现有页面的链接,但它们未排序,sort 过滤器似乎被忽略了。显然,我做错了什么,但我不知道是什么。
【问题讨论】:
-
我刚刚发现:
sort做了 的事情。如果网站没有提供weight,则最后写入。但是如果确实提供了一个,仍然不是按照它排序,而是按照文件名排序。 -
我相信排序过滤器可能只适用于输出标记(包装在 {{ }} 中的东西,而不是 {% %})。因此,它可能无法用作 for 循环上的过滤器。我的评论基于此页面:github.com/Shopify/liquid/wiki/Liquid-for-Designers,它说过滤器用于输出标记。