這就是我如何按照標籤中的帖子數量(降序)排序,沒有任何插件(即兼容GitHub頁面)。
它也適用於標籤名稱包含空格的情況;只有,
和:
是禁止的字符(但您可以輕鬆更改這些字符)。
{% capture counts_with_tags_string %}{% for tag in site.tags %}{{ tag[1] | size | prepend:"000000" | slice:-6,6 }}:{{ tag[0] }}{% unless forloop.last %},{% endunless %}{% endfor %}{% endcapture %}
{% assign counts_with_tags = counts_with_tags_string | split:"," | sort | reverse %}
<ol>
{% for count_with_tag in counts_with_tags %}
{% assign tag = count_with_tag | split:":" | last %}
{% assign count = site.tags[tag] | size %}
<li><a href="/blog/tags/{{ tag | slugify }}">{{ tag }} ({{ count }})</a></li>
{% endfor %}
</ol>
這是超級毛病。它做什麼:
counts_with_tags_string
設置爲像000005:first_tag,000010:second_tag,000002:third_tag
這樣的字符串。使用過濾器鏈| prepend:"000000" | slice:-6,6
生成零填充數字。
- 這是在逗號分割和按字典順序排序,這是因爲零填充。結果分配給
counts_with_tags
。
- 最後,我們迭代元素並在
:
上分別尋找原始標籤名稱。我們可以用同樣的方法找到計數,但因爲它是零填充的,所以使用site.tags[tag] | size
代替它更容易。
似乎是正確的答案。我不熟悉ruby。這需要我花一些時間來研究。 – hbrls
不幸的是標籤數組沒有排序。不是通過標籤名稱。不按參考帖子的數量。 –