Last active
December 19, 2015 15:48
-
-
Save pdokas/5978746 to your computer and use it in GitHub Desktop.
The simplest way I can find to find a sorted list of all tags across all posts in Siteleaf.
Tags are scoped to the page-level (ie. blog
), so you can use the following code to get all tags used on your blog posts (sorted alphabetically):
<ul>
{% assign sorted_tags = site.pages['blog'].taxonomy['tags'].values | sort:'value' %}
{% for tag in sorted_tags %}
<li><a href="{{tag.url}}">{{tag.value}}</a></li>
{% endfor %}
</ul>
Swap blog
for your page's slug, and tags
for the name of your tagset (if not using the default tags
).
Very cool, this works perfectly, thanks for the speedy work on this too!
While this is perfect, I have a few questions to better my understanding.
- In the line
site.pages['blog'].taxonomy['tags'].values
, what is thevalues
member? It’s not mentioned in siteleaf-themes. Syntactically it’s a bit confusing to me because it looks like we’re not iterating over thetags
array itself, but some child of it. - Passing a key to
sort
is awesome. It’s a shame it’s not in the Liquid For Designers docs. - I’ve found it’s perhaps impossible to iterate over a filtered array in a for loop. For instance, I often run into trouble with a line like
{% for tag in site.pages.blog.taxonomy.tags.values | sort:'value' %}
, even when wrapping thein
clause in ( ). Is this syntactically invalid or is there some subtlety I’m overlooking?
- In Siteleaf you can call your tag set anything you want (default is 'tags', but can be anything).
values
is the generic name for the array of 'tag' values. Here is what the data looks like behind the scenes:
https://github.com/siteleaf/siteleaf-api#get-v1taxonomyidjson
We'll update the theme docs to make this more clear.
-
Agreed, they list it but don't explain it further.
-
You can't sort on a for statement, but you can sort first and assign it to a new variable like this:
{% assign sorted_tags = site.pages['blog'].taxonomy['tags'].values | sort:'value' %}
Now you can use the sorted_tags
variable:
{% for tag in sorted_tags %}
<li><a href="{{tag.url}}">{{tag.value}}</a></li>
{% endfor %}
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
tag\url
, each separated with a,
tag\url
items