Hi,
I try to list all the categories used in my blog like this:
<ul class="categories">
{{range $name, $taxonomy := .Site.Taxonomies.categories}}
<li><a href="{{$baseurl}}{{"categories/" | relLangURL}}{{$name | urlize}}">{{$name}}</a></li>
{{end}}
</ul>
But I get two problems:
- The list works only when I restart $hugo server. When I refresh the page .Site.Taxonomies.categories is empty
- When it works, I only get the url of the category but not the name I defined in a _index.md (I can get the title of the categories with .Params.categories in a single page)
Any idea ? Thanks!
That’s odd. I just checked my theme and I’m listing categories pretty much in the same way
{{ range $key, $value := .Site.Taxonomies.categories }}
<li><a href="{{ $baseurl }}categories/{{ $key | urlize }}">{{ $key | humanize }}</a> ({{ len $value }})</li>
{{ end }}
how is your config.toml set up?
Mine is like this:
[taxonomies]
tag = "tags"
category = "categories"
could this be a result of the default fast render mode?
1 Like
By trying to solve my second problem, I solved my first one.
I don’t use .Site.Taxonomies.categories anymore (which was empty most of the time).
{{range ($.Site.GetPage "taxonomyTerm" "categories").Pages }}
<a href="{{.Permalink}}">{{.Title}}</a></li>
{{end}}
I’m still curious to understand why .Site.Taxonomies.categories doesn’t work well.
2 Likes
I don’t want to open a new thread, so I’ll join in here: The code that @brunoamaral posted unfortunately doesn’t work for me either, although it should. (I use category instead of categories, but everything else is identical.)
Any new ideas?
That’s some pretty old code 
Here is the version I am using right now.
{{ range $.Site.Taxonomies.categories }}
{{ if ne .Page.Title "" }}
<a href="{{ .Page.Permalink | absLangURL }}" class="btn btn-primary" title="{{ i18n "posts_categorized_as" }} {{ .Page.Title }}"><strong>{{ .Page.Title }}</strong> ({{ .Count }})</a>
{{ end }}
{{ end }}
Hope it helps.
1 Like
Ah! I found my problem thanks to your code. It works now!
(It was a complete misunderstanding on my side - the singular term does not work, the plural term does. Oops!)
1 Like
Y’all do this instead.
{{- with .GetTerms "categories" }}
{{ range . }}
<a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a>
{{- end }}
{{- end }}
1 Like
What’s the technical difference here?
That’s the ‘modern’ way of ranging through taxonomies in hugo
1 Like
TIL. Thanks!
So if I want the whole site’s categories, I’ll need to use Site.GetTerms?
GetTerms is a Page method, not a Site method, and is not applicable to this issue.
1 Like