Traditional multi level hierarchy vs flat discourse hierarchy

I’m struggling to convince our organisation not falling back to a traditional forum where you can multiple hierarchy levels, which tend to end up in click-and-run torture, see It’s Time We Talked About Tags
I need ammunition ensuring that it easily feasible by tags without the need to type anything in search box
It would be great if the following questions get answered.

We have local-nodes supporter network what will grow across the globe comparable with “Local Groups” category on On there, all location are covered by subcategories. That is the right solution if you don’t go down to city level as we have to do.
I have in mind a structure as follows:

  1. category: local nodes
  2. tag: continent (need to be discussed if it makes sense)
  3. subcategory: nation (nation shall be well visualized, that is why the continent is tag)
  4. tag: city

Is there any possibility, that I can navigate by tags only, making use of tag groups hierarchy, like for

  1. tapping from Asia to Japan
    1. Continents
    2. Nations
  2. tapping from Europe to Rome
    1. Continents
    2. Nations
    3. Cities

I haven’t found a way yet, to cover this by navigations fields bar. Neither have I found a way, that topic is auto-tagged by the name if its subcategory and its subcategory parent category to make this possible work.
I’m aware of

In addition (for the beginning :slight_smile:)

  1. how to make / when does “Search” being shown in tag Search

  2. integrate tag search in category search (I know that there is a search box on the top right but is lists topics too)

At the end I would like to show a world map in the category “local-nodes”, allowing to zoom into the location of interest.
I’m hoping I can make use of the map seen on Locations Plugin, the Data Explorer Plugin Data Explorer Plugin and Custom Layouts Plugin, may be integrated into Discourse Category Banners.
currently I’m only aware of:

It shall look somehow like this:


I’ve thought about this a bit. I’ve previously played around with a three-tier category system and different tag-based navigation systems.

category: local nodes
tag: continent (need to be discussed if it makes sense)
subcategory: nation (nation shall be well visualized, that is why the continent is tag)
tag: city

I think you essentially need a tag dropdown specific to a tag_group, with the tag_group being determined by the category context (to accomodate different city groups for nation subcategories).

In terms of having maps in places other than a topic list, or embedded in a post, the Locations Plugin has a componentized map that can be inserted in a category page.

You could achieve both in a theme component. If you need help building such a component I can give you some pointers if you want to try yourself, or you could hire Pavilion to do it for you.


thank you very much for the positive feedback, so anything besides the map could be done by ourselves :smiley: but we have to code a bit to customize the theme the way we like.

To get an idea of the roadmap getting this done, can you confirm, correct, extend or answer the following

  1. :question: ensure that we can create endless (only limited by page size) tag dropdowns, with selection on tags based on its previous dropdown.
    @angus, can you confirm that is possible in principle?
  2. :question: can category and tag search merged as asked in 2. in the last (third) list.
  3. :factory: establish a tag hierarchy comparable to what is shown in the OP. This is the very fundamental, without that, this project is doomed.
  4. :factory: introduce auto-tagging
    1. :question: :arrow_forward: :factory: can this only be done by a plugin as indicated in Topic auto tagging
      :arrow_right: see Tags: category restrictions, tag groups, relationships
  5. :factory: implementing the enhanced Locations Plugin :star_struck:

if we go down this road I will definitely respond to the generous offer

That is currently unlikely as our community is about to make its very first step and revenue will be on a very low level, moreover we are non-profit.


that is answered by Tags: category restrictions, tag groups, relationships

1 Like

Everything is possible in principle.

For example I’ve previously made a 3-level category hierarchy that also supports multiple tag intersections on the category level.

3-level category hierarchy with mutli-tag intersections route structure
scope "/multi" do
  constraints(tag_id: /[^\/]+?/, format: /json|rss/) do
     get '/c/:category/t/:tag_id/*tags' => 'tags#show', as: 'tags_category_show'
     get '/c/:parent_category/:category/t/:tag_id/*tags' => 'tags#show', as: 'tags_parent_category_category_show'
     get '/c/:grandparent_category/:parent_category/:category/t/:tag_id/*tags' => 'tags#show', as: 'tags_grandparent_category_category_show'

     Discourse.filters.each do |filter|
       get "/c/:category/t/:tag_id/*tags/l/#{filter}" => "tags#show_#{filter}", as: "tags_category_show_#{filter}"
       get "/c/:parent_category/:category/t/:tag_id/*tags/l/#{filter}" => "tags#show_#{filter}", as: "tags_parent_category_category_show_#{filter}"
       get "/c/:grandparent_category/:parent_category/:category/t/:tag_id/*tags/l/#{filter}" => "tags#show_#{filter}", as: "tags_grandparent_category_category_show_#{filter}"

This is more complex than what I think you want to do, but it’s not sustainable unless you’re willing to invest a lot of time or resources in supporting it. It would be likely to break at some point when standard Discourse changes.

With that context, there’s two things to understand about the category / tag route structure in standard Discourse:

  1. Multi-tag intersections are only possible site-wide; not at the category level, i.e. there aren’t routes in standard Discourse to show a topic list with topics in a specific category and with more than one specific tag. If you wanted this, you’d have to add the route.

  2. Category intersections are not possible. i.e. there isn’t a route in Discourse for showing topics from two categories on the same level (i.e. two parent categories or two child categories).

You can still achieve a four-level system (which seems to be your goal) without making significant server-side additions.

For example, you could exclusively use tags to represent the four levels. represents the intersection between the tags, events, bug, to-do and high on Pavilion. You could have 4 dropdowns, one for each tag_group those tags are drawn from, e.g.

[plugin] [type] [status] [importance]

Once you’ve figured out how you want to structure your hierarchy within the existing Discourse route structure, the rest of the things you’ve listed are just client-side modifications and are (relatively) straighforward.

  1. 3-level category hierarchy

    is there an example? I don’t know it would look like and where the code is added.
    Where and how is the grandparent_category introduced as there aren’t default tools to do it via the UX.
    It that somehow related to Topics tagged events & bug & to-do & high? It isn’t, is it? The code above would alter the categories landing page, wouldn’t it?

  2. Multi-tag intersections sound good although they

    that would may require to skip categories as the main navigation route and build a customized landing page based on that tags, something I asked in Display tags by tag group
    That would require a custom theme, would it?

  3. only tags

    yep, that is the idea of how to start, anything else can be changed at a later stage.
    As long as we ensure proper tagging anything should be feasible, depending on time and frustration tolerance :), isn’t it?
    The hierarchy would be as follows

    1. level: local nodes
    2. level: continents
    3. level: nations
    4. level: cities

    In the beginning, we properly use only local nodes as category and a subcategory per city*.* As soon as there are too many nodes we would switch to local nodes and nations, hoping that we are going to create our own theme to make tag-based navigation somehow more appealing (e.g. same boxes for tags as for categories as mentioned in point 2).
    Moreover, I hope we get along with my upcoming feature request, discussed in Locations Plugin as that could be used in many categories/tag groups :angel:.

    The most important thing, that we get Topic auto tagging running as soon as possible otherwise we will have mess before we even begin at large scale
    In addition, we need to introduce additional drop-down boxes in the navigation bar, which are filled with tags depending on the selection. I hope it is not a big deal mix sub-categories with tag-defined drop-down boxes.
    Is it simple to achieve something like the layout below?

    1. low node number layout
    2. higher node number layout
  4. merge boxes
    Last but not least, it might be helpful, can you merge boxes like:

This won’t work because it violates one of the restrictions I mentioned.

You can’t filter by two tags within a category.

I’m not sure, but I think you’re assuming that if you’re in the local nodes category and filtering by ‘continents’, you’ll also be able to filter by nations and cities at the same time. This also won’t work.

I think that this is your best move

use only local nodes as category and a subcategory per city

I think you’re trying to incorporate too much future planning into your current needs.

As soon as there are too many nodes we would switch to local nodes and nations

I understand the desire to want to set up the right ‘structure’ now, but however good your service is, it’s going to take a while before this becomes a problem for you, i.e. years. At that stage, the assumptions on which you’re running your community will have changed.

Moreover, the problem you’ll face will be largely one of organisation, rather than one of hierarchy. For example, you could just group the city sub-categories in a modified navigation bar according to nation if you wanted to. If you wanted to have discussion on a ‘national’ level (query whether that would make sense anyway), you could just have a seperate sub-category for that.

You don’t necessarily need a hierarchical structure in your discussion forum that strictly matches the administrative hierarchy of the places around which discussion is happening. You need a hierarchy that makes it possible for your users to find the content that’s relevant to them. I understand you’re connecting those two concepts, but I’m not sure whether that’s warranted. Focusing too much on that connection is over-complicating your thinking around the forum structure.

Basically, I think you’re investing too much in making this structurally similar to how you see the ideal state of your service from a 10,000 foot view, i.e. operating on such a large scale that it’s necessary to divide cities up by nations and continents. When and if you get to that point, the whole nature of this decision will be different.


you are right my mistake, I got lost in details last night.

[1] Isn’t it possible to add additional drop-down boxes ?
That would somehow simulate advanced search

agree. I’m trying to bring together old, deep structured thinking with the approach of discourse.

but still, as you said

not sure if there will be only

as there is a focus on projects on very low, geographical limited, area.
Of course, certain topics will have national or global significance. How to moderate that/put all in the right context/make it available in the right corner of discourse is properly something where learning by doing applies.

If we decide to rely on tags only, your tag intersection approach could help tremendously.
Before we do that step, we need to customize the tags and intersection landing page to look somehow the same as the categories landing page, is that feasible?
I think of making the layout of SE23 Forum to use boxes filled with “sub-tags” as implied in Higher level of granularity for category & subcategory styling (but there I ask to improve boxes for subcategories).
In addition, as soon as you click on box or tag within a box, it triggers the query The result is rendered to displayed in the same fashion as the box style (or whatever we consider as appropriated).

As you see I’m still caught in the multi-level route as it is the same analogy, when you zoom in from global to local scale. That is for any new user the most natural navigation route to get to his local node.
I hope you are proved correct by

but there might be concerns that a level becomes bloated by too many tags. For example, having all cities of the USA or China in the subcategories China and USA, respectively can get messy.

agree but although I’m properly

:grin:. That statement will help to de-emotionalise the deep level approach.

can you explain it in more detail or is there an example around?
Is this navigation bar customization somehow the same as asked in very beginning of this post, marked by [1]

I created kind of mockups visualizing a possible roadmap, postulating that level nation and cities cannot live side by side by making each of them a subcategory of local nodes.

  1. Landing page is categories

  2. Landing page is categories but local nodes spring up like mushrooms

  3. lading page tags, custom theme takes care of categories like layout

1 Like