Я полный новичок не только в Discourse, но и в форумах в целом, и хотел бы узнать, возможно ли и как сделать так, чтобы URL темы содержал информацию о её категории.
Я использую стороннее программное обеспечение, которое парсит форум. Мои возможности по формированию запросов ограничены, поэтому при парсинге ветки (темы) программа должна определять категорию, к которой она относится. Похоже, она делает это на основе URL.
С точки зрения приложения это не имеет смысла, как я уже указывал, но вы, возможно, сможете создать плагин или скрипт для изменения всех URL-адресов.
Категория, полагаю, чётко указана в HTML-коде представлений краулера, так что, возможно, вы сможете вместо этого изменить инструмент, чтобы использовать эту информацию?
Если вы явно предоставляете URL-адреса скрейперу и определяете, как он будет извлекать категорию из них, вы возможно сможете использовать предложенный Тобиасом хак — например, предоставлять ему путь вида /t/category-name__topic-slug/topic-id. Discourse вернет ответ с редиректом 301 на конечный URL, основываясь исключительно на topic-id.
Однако, если скрейпер получает эти URL-адреса в процессе сканирования, это кажется слишком трудоемким решением для изменения, направленного лишь на преодоление ограничения стратегии скрейпинга.
Насколько мне известно, нет. Реализация маршрута /t/category-name/topic-slug/topic_id в плагине кажется выполнимой, но добавление опции, чтобы все ссылки на темы в Discourse предпочитали этот альтернативный маршрут, кажется (лично мне) слишком трудоемким для столь малой выгоды.