Я думаю, что ответ во многом зависит от ваших ожиданий относительно того, насколько различные темы внутри вашего сообщества будут интересны конкретному участнику.
Ожидаете ли вы значительного пересечения между группами, обсуждающими фотографию и кулинарию? Если да, то теги для этих разных тем, вероятно, будут работать хорошо.
Или вы пытаетесь обслуживать несколько субсообществ — одно для кулинарии, другое для фотографии — в рамках одного и того же сайта? Если так, вам, возможно, больше подойдут категории для каждого из них.
Я исхожу из предположения, что вы говорите о едином сообществе, где люди вместе обсуждают множество тем.
Моя рекомендация — начать с чего-то похожего на подход B.
Наличие разных категорий для различных типов контента позволит вам более четко сигнализировать о том, какой это вид обсуждения и какое поведение ожидается от участников. В некоторых случаях вы можете усилить это, настроив категории под эти цели (например, используя плагин «solved» для категории вопросов и ответов).
Затем в первую очередь опирайтесь на теги для тематического содержания. Это дает вам свободу применять несколько тегов к обсуждениям, когда есть пересечения (например, фото готовки!).
Если в какой-то момент вы заметите, что полезно более четко отделить одни темы от других, вы сможете использовать теги для помощи в перекатегоризации.
В целом мы рекомендуем меньше категорий, а не больше, особенно на начальном этапе, а также более плоскую иерархию вместо глубокой. По умолчанию поддерживается только два уровня вложенности. Чтобы включить поддержку третьего, нужно приложить дополнительные усилия.
Не думаю, что люди активно используют URL для предварительного заполнения редактора. Я могу представить, что это может быть полезно в некоторых сценариях, но предлагаю пока отложить эту идею, пока не возникнет в ней реальной необходимости.
Для улучшения обнаружения контента стоит также обратить внимание на страницу /filter, которая позволяет создавать более кастомные списки тем. Эту страницу можно настроить в боковой панели вашего сайта: Filtering topic lists in Discourse