Liquid 如何根据jekyll数据yaml文件中的键值对维度数组输出进行排序?
我需要几个Liquid 如何根据jekyll数据yaml文件中的键值对维度数组输出进行排序?,liquid,jekyll-theme,Liquid,Jekyll Theme,我需要几个yml文件的名称,按字母顺序排列在输出上 我尝试在for循环中添加| sort:'name'。我得到: Liquid Exception: no implicit conversion of String into Integer in pages/index.html 示例\u数据/cat/example1.yml 在/cat文件夹中,我的测试中至少有3个yml文件 示例包含文件 {site.data.cat%} {%assign cat=cat_散列[1]|排序:'名称'%}
yml
文件的名称,按字母顺序排列在输出上
我尝试在for循环中添加| sort:'name'
。我得到:
Liquid Exception: no implicit conversion of String into Integer in pages/index.html
示例\u数据/cat/example1.yml
在/cat
文件夹中,我的测试中至少有3个yml文件
示例包含文件
{site.data.cat%}
{%assign cat=cat_散列[1]|排序:'名称'%}
{{cat.web}
{%endfor%}
我已经读过几个关于这类问题的例子。只是不确定循环中的任何哈希结果是否符合我的情况?您没有对有效的哈希数组应用排序 如果你做一个
{site.data.cat | inspect}
你会得到类似于{“t1”=>{“name”=>“test1”},“t2”=>{“name”=>“allo”},“t3”=>{“name”=>“jekyll”}
(为了简洁起见,我简化了数据文件,但对于像你这样的更复杂的数据文件也同样适用)
您当前正在对无法自行排序的{“name”=>“test1”}
对象应用排序筛选器
您需要做的是在单个数组中获取所有数据哈希。然后你就可以分类了
{% assign datas = "" | split: "" %}
{% for cat in site.data.cat %}
{% assign datas = datas | push: cat[1] %}
{% endfor %}
DEBUG : {{ datas | inspect }}
现在有了一个可以排序的数组
{% assign datas = datas | sort: "name" %}
DEBUG : {{ datas | inspect }}
您现在可以打印按名称排序的数据
完整代码:
{% assign datas = "" | split: "" %}
{% for cat in site.data.cat %}
{% assign datas = datas | push: cat[1] %}
{% endfor %}
{% assign datas = datas | sort: "name" %}
<div class="row">
{% for cat in datas %}
<div class="col-6 col-12-narrower">
<section>
<header>
<a class="image featured" href="{{ cat.permalink }}" title="{{ cat.name }}">
<h3>{{ cat.name }}</h3>
</a>
</header>
<p>{{ cat.web }}</p>
</section>
</div>
{% endfor %}
</div>
{%assign data=”“| split:%}
{site.data.cat%中的cat为%1}
{%assign datas=datas | push:cat[1]}
{%endfor%}
{%assign datas=datas |排序:“名称”%}
{%用于数据%中的cat}
{{cat.web}
{%endfor%}
请注意,
inspect
filter仅用于调试。我尝试了{%assign datas=“”| split:“%}{%for cat in site.data.cat%}{%assign datas=datas | push:cat[1]}{%assign datas=datas | sort:“%%}{name}{{{datas | inspect}}{cat.web}{%endfor%}编辑了我的答案所以完整的答案是{%assign datas=“”| split:“%}{%cat in site.data.cat%}{%assign datas=datas | push:cat[1]}{%endfor%}{%assign datas=datas | sort:“%name”}{%cat in datas%}{cat.web}{%endfor%}
{% assign datas = datas | sort: "name" %}
DEBUG : {{ datas | inspect }}
{% assign datas = "" | split: "" %}
{% for cat in site.data.cat %}
{% assign datas = datas | push: cat[1] %}
{% endfor %}
{% assign datas = datas | sort: "name" %}
<div class="row">
{% for cat in datas %}
<div class="col-6 col-12-narrower">
<section>
<header>
<a class="image featured" href="{{ cat.permalink }}" title="{{ cat.name }}">
<h3>{{ cat.name }}</h3>
</a>
</header>
<p>{{ cat.web }}</p>
</section>
</div>
{% endfor %}
</div>