{% comment %}Sort decreasingly, alphabetically by tag frequency and by name. After building a data structure like this: frequency|tag name ================== 000008|mytag 010000|anothertag 000010|three 000010|four 000010|six 000010|five it becomes: frequency|tag_name ================== 010000|anothertag 000010|six 000010|three 000010|four 000010|five 000008|mytag where the number of leading zeros for each frequency is computed with: base_ten_power = len(str(max(number_of_posts_per_tag))) + 1 leading_zeros = base_ten_power - len(str(frequency)) {% endcomment %} {% comment %}Get the frequency of the tag with the maximum frequency. {% endcomment %} {% assign x = '' %} {% for t in site.tags %} {% assign x = x | append: t[1].size | append: ',' %} {% endfor %} {% assign b = x | split: ',' | sort | last | size %} {% comment %}Str to int and add a leading zero later. {% endcomment %} {% assign base_ten_power = b | plus: 0 | plus: 1 %} {% assign tags = '' %} {% assign leading_zeros = '' %} {% for t in site.tags %} {% capture tag_frequency %}{{ t[1].size }}{% endcapture %} {% assign len_tag_frequency = tag_frequency | size %} {% comment %}Prepend a variable amount of leading '0' charaters so that sorting can be performed correctly. {% endcomment %} {% assign leading_zeros = '' %} {% assign power = base_ten_power | minus: len_tag_frequency %} {% for i in (1..power) %} {% assign leading_zeros = leading_zeros | append: '0' %} {% endfor %} {% assign tags = tags | append: leading_zeros | append: t[1].size | append: '|' | append: t[0] | append: '§' %} {% endfor %} {% assign sorted_tags = tags | split: '§' | sort_natural | reverse %} {% if site.limit_tag_links %} {% assign s = site.limit_tag_links | plus: 0 %} {% assign sorted_tags = sorted_tags | slice: 0, s %} {% endif %}