List custom taxonomy terms in a specific order (not alphabetical)

#1

Hello,

I’m building a hugo theme with some custom taxonomies.
The intention is to build it to be compatible with Netlify CMS.
In a sidebar I want to list the terms of one taxonomy with a link to the show page of that specific term.
What I want to achieve is to list those terms in a specific order, not alphabetical.
The reason for that is that if the website is for example talking about food recipes, a taxonomy would be “Difficulty” - and the terms for example “Easy, Medium, Difficult, Very Difficult”, and would be good to list them in the sidebar in this order, and not alphabetical.

A nice resolution would be to be able to define all the taxonomy terms already in the config file with a weight

Unfortunately I could not find any solution in the docs or other answers, if it was due to lack of understanding from my side please excuse me but I don’t know how else proceed :slight_smile:

Thank you!!

EDIT:
As a workaround I’m defining my taxonomy terms as:

01 Easy
02 Medium
03 Difficult
04 Very Difficult

and in the sidebar template:

				<h3>Difficulty</h3>
				<ul>
					{{ range $name, $taxonomy := .Site.Taxonomies.difficulty }}
					<li><a href="{{ "/difficulty/" | relLangURL }}{{ $name | urlize | lower }}">{{ trim $name "0123456789" | humanize }}</a></li>
					{{ end }}
				</ul>

This is ordering the terms in the order I wish and is not displaying the numbers, of course if I had numbers in my terms it wouldn’t be a solution.

My concern at this point is that the slug of the taxonomy term is /difficulty/01-easy/ and I don’t want that. How can I tell Hugo to create the list pages in a different slug? for instance /difficulty/easy/

Thank you!!!

0 Likes

#2

Hi,

You should be able to assign a weight in the front matter of your term, and then keep the terms easy medium etc.

0 Likes

#3

Hello @pointyfar and thanks a lot for your response.
Is it possible to define weight and other properties for a taxonomy term in the config file?
I do not want to create for every taxonomy term an .md file and a list.html template.
Something like

[[taxonomy.difficulty]]
  name = "easy"
  weight = "10"

would be amazing, is there the possibility to do similar declarations?

or else with

[permalinks]
  difficulty = "/:section/:slug/"

is there a way to loop through the :slugs and remove particular characters?

Or even something like

[permalinks]
  difficulty.01-easy = "/easy/"

I would like to keep the theme to use only its html files and the config.toml, without relying in single .md files for all the taxonomies to be defined

Thanks a lot!!

0 Likes

#4

I don’t think those are currently supported.

You could define the permalink configuration, but you would still need to specify the slug and/or title in the term’s front matter, if you want it to use custom values.

0 Likes