Using discourse as a Comic review/discussion platform

I have a bit of a specific use case that I am not sure whether Discourse is the right medium for.

I would like to host a discussion platform around 5000-7000 Comics. However, I don’t want all the discussions under a single topic since it is hard to trace different topic of discussions under the same Comic. Hence I thought I can create a “Category” for each Comic and there can be seperate topics underneath. Moreover, I read that this can create a load on both Server and Client side.

Note that navigation is not an issue, each Comic has a unique identifier that the community members are aware of so no-one would be browsing around the categories. The user will just type the identifier to find the category.

Is there a better way of accomplishing a similar functionality? Would using tags help?

1 Like

Long story short: yes, that is the way to go.

1 Like

Can I force the usage of tags in each post? Because Ideally, the forum shouldn’t contain anything that does not belong to any of the comics.

1 Like

See the Category - Tags settings:

image

3 Likes

Can I programmatically populate tags? One idea I had was to create a topic for each tag (I guess it is the only way of creating a tag) but I couldn’t find much information about procedurally generating topics.

That’s exactly what I do on my board game community: whenever a board game is added to (or renamed on) my database, a tag and two custom topics are created/updated.

IIRC when I worked on this, there’s not a specific endpoint for creating a single tag (you can add a new one when creating a topic though), but I was able to use the batch tags upload to do this.

Something like this:

const formData = new FormData();
formData.append("file", Buffer.from("the-tag-name,an-optional-tag-group"), {
  contentType: "text/csv",
  filename: "tags.csv",
});
const { data } = await axios.post(`${process.env.DISCOURSE_URL}/tags/upload.json`, formData, {
  headers: {
    ...formData.getHeaders(),
    "Api-Key": process.env.API_KEY,
  },
});
2 Likes

I see, is it possible to see how tags.csv looks like?

See What CSV format is needed for importing tags?

2 Likes

I was exploring a similar us case with tags from one tag group being required and practically used as top-level structure (replacing categories).

Right now tags only have their name stored in a data attribute. It would be great if their group would also be stored in an attribute. So we could distinguish tag groups on the ux.

edit: posted a feature request for this: Add a data-tag-group attribute for tags

1 Like

Sorry to ask many questions but I wonder another functionality related to tags and topics.

Is it possible to “pin” a topic to a specific tag such that when the tag is selected, the first thing the users will see in the topics list is the pinned topic?

You can’t pin a topic to a tag from the default pin modal. Two options I’m aware of:

2 Likes

The second option looks like the exact solution I am looking for. Is it possible to programmatically set these banner topics for each tag via any API?

I wouldn’t know how to do that. One thing to mind is that it seems a bit slow to render. I’m not enough of a developer to explain or even understand why, but it might slow down your forum if you use it for every page.