Now that tag support is a core feature of Discourse instead of being a separate plugin, we've added some new features around tagging. In this How-To I'll go through setting up a tag schema like Car Talk uses.
We'll want to achieve these things:
- Tags for car makes and car models.
- Only allow the car make and model tags to be used in certain categories.
- Car model tags can only be chosen if the matching car make tag is used.
1. Pre-reqs
First, we need to enable tags in the settings:
In a schema where we're strict about how tags are used, we should prevent most people from creating new tags:
2. Tag Groups
Go to the tags index page (/tags). Choose "Manage Tag Groups" from the top right menu.
Top-level tags
First let's create the car make tags, which we want people to enter first.
On the tag group page:
- Create a new group.
- Give it a title.
- Add the tags that should belong in the group. You can add existing tags, or create new ones from this page.
- We only want people to use one car make tag per topic, so check the box to add this limitation.
- Save the group.
Parent-child tag relationships
Now we'll define the car model tags, which are grouped according to the car makes. There will be one group for each car make.
Create another group as before with an appropriate name. This time we add a parent tag. In this example, we define the Honda car models group, and use honda as the parent tag.
The result
At this point, tagging a topic will obey these rules. When trying to add tags, the first tag can only be one of the car makes (or other tags that have no limitations on where they can be used).
The second tag can be one of the model tags matching the chosen make tag.
3. Category restrictions
If I only want car discussions to happen in a certain category, I can restrict the use of all the car make and model tags from the category settings.
In the "Tags" tab of a category's settings, add the groups.
If I have other categories where these tags should also be permitted, they can be added in those categories' settings in the same way.
And that's it!