I really like where you're headed with this. I always liked the way tags/taxonomies worked in WordPress, but they were rarely used well.
Making some assumptions, here's how I imagine your tags (-as primary taxonomy) system in use:
Assumptions:
- Tags are hierarchical/nested by default - This enables special groupings of tags
- The properties of tags can be altered per tag-grouping.
- Unique interfaces can be created for different tag-groupings.
- Tag groupings can have relationships with other tag groupings (explained toward the end)
Flarum would ship with one default tag-grouping,
Category tag - Default settings
```
category:foo
```
- Category tag allows one level of nesting. E.g. "category:foo:bar"
- Category is a mandatory tag. You may not submit your topic without a Category added.
- Only one Category is allowed per thread.
- Category has special styling properties (extra styling required for Category index pages and optional flair like unique colors or even images attached to each category).
Now, because category:
has its own interface dedicated to its grouping, the user will never see that long "category:foo:bar" when they're posting a new thread to the sub-category called Bar. They would only see your interface mocked up above (in which anything that is not a Category would be excluded from the first drop-down.).
All of these defaults could be tampered with via an interface. Example from WordPress:
Now for the fun part. This is where the "relationships" between tag groupings come in.
Let's say I only have two Categories on my forum:
For the Q&A, I want a basic way to track Solved/Unsolved status (and I'd like to piggyback the tags system so I can easily filter between solved and unsolved topics). However, i do not need this functionality in General Chat. So, a new tag grouping is created, solved:
, and it has a special relationship with another grouping:
- Only available in topics with
category:qa
attached.
- Only available to OP or moderators and above.
- Only one
solved:
tag can be added to a thread, i.e. either solved:true
or solved:false
- The tag grouping does not accept additional tags. Meaning, the OP (nor the admin, without overriding the default interface) can't add
solved:maybe
Here's another interesting use case for tags to facilitate a multilingual forum.
p.s. You might also want to consider allowing a tag to be added per-post, not just per-topic. I've noticed some Discourse users requesting that. I for one would not want to venture into that territory, but I can see how some niche communities might find good use for it.