首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Liquid中对转换为数组的哈希进行排序

如何在Liquid中对转换为数组的哈希进行排序
EN

Stack Overflow用户
提问于 2011-06-17 22:44:02
回答 8查看 7K关注 0票数 12

我的理解是,Liquid将Ruby哈希转换为数组,以便在标记中使用。例如,使用Jekyll时:

代码语言:javascript
运行
复制
{% for category in site.categories %}
    <li>{{ category[0] }}</li>
{% endfor %}

..。将site.categories转换为元组数组,其中引用键,1值列表。

如果我想让上面的类别图按键(每个元组的)按字母顺序排序,我该怎么做呢?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2011-06-20 02:01:11

默认的Liquid实现和Jekyll所做的添加都不能满足您的需求。

恐怕您想要的东西在目前的设置下是不可能实现的。您必须使用monkeypatch Jekyll或Liquid,才能使散列以排序的顺序返回它们的键。

票数 1
EN

Stack Overflow用户

发布于 2011-11-25 08:10:17

这是一个古老的问题,但我只是花了最后一点时间自己解决这个问题。我使用以下代码实现了您(和我)想要的结果。

代码语言:javascript
运行
复制
{% capture get_items %}
 {% for cat in site.categories %}
   {{ cat | first }}
 {% endfor %}
{% endcapture %}
{% capture num_words %}
 {{ get_items | split:' ' |  sort | join:' ' | number_of_words }}
{% endcapture %}
{% for item in (1..num_words) %}
 <li>{{ get_items | split:' ' |  sort | join:' ' | truncatewords:item | remove:'.    ..' |    split:' ' | last }}</li>
{% endfor %}
票数 9
EN

Stack Overflow用户

发布于 2012-08-18 20:41:37

您也可以使用数组而不是散列!

不使用这个yaml:

代码语言:javascript
运行
复制
categories:
  a_category: category description
  another_category: another category description

你可以使用这个:

代码语言:javascript
运行
复制
categories:
  - {name: 'a category', description: 'category description'}
  - {name: 'another category', description: 'another category description'}

然后,您可以像这样迭代,顺序将保持不变:)

代码语言:javascript
运行
复制
{% for category in site.categories %}
  <li>{{ category['name'] }}</li>
{% endfor %}
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6387540

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档