【发布时间】:2016-11-12 07:30:45
【问题描述】:
我正在为部署在 Github 页面上的 Jekyll 网站制作词汇表模板。
条目是从 _data/glossary.yml 文件中提取的。
我希望模板按字母顺序排列条目,而不管glossary.yml 中的数据顺序如何。
使用{% assign glossary = site.data.glossary | sort 'term' %} 确实会返回一个按字母排序的对象,我可以使用for 循环对其进行迭代。
但是,sort 过滤器区分大小写 - 小写条目在所有大写或大写项之后排序。
Liquid 4.0.0 添加了一个 sort_natural 过滤器,可以满足我的要求,但 Github Pages 当前运行的是 3.0.6,所以我需要一个解决方法。
我的问题是我该怎么做:
- 在 Liquid 模板中获取 site.data.glossary?
- 操作每个条目的第一个映射的字符串值?
- (即使用
capitalize字符串过滤器消除大小写差异)
- (即使用
- 使用本地字符串过滤值对整个地图进行排序?
- 奖励:如果我仍然可以使用源字符串值并保留其原始大小写,以便最终显示在生成的 html 中。
例如,给定以下data/glossary.yml:
- term: apricot
loc: plastic
- term: Apple
loc: basket
- term: Banana
loc: basket
- term: bowtie
loc: closet
- term: Cat
loc: outside
如何创建对以下内容进行排序和显示的本地 Liquid 对象变量?:
- 苹果
- 篮子
- 杏
- 塑料
- 香蕉
- 篮子
- 领结
- 壁橱
- 猫
- 外面
【问题讨论】: