Topic URL to include its Category

I am investigating the possibility of including the category in the topic URL for retargeting purposes.

For example: https://meta.discourse.org/t/support/where-can-i-create-tags/31094 or https://meta.discourse.org/support/t/where-can-i-create-tags/31094

From previous responses on this subject, it seems as though this will wreck havoc on the routing system, correct?

What about the possibility of including the category in query string? https://meta.discourse.org/t/where-can-i-create-tags/31094/?category=support

Thoughts, suggestions, answers?

「いいね!」 1

I think if you put it before the topic ID at the end there’s no problem… but you can’t add more slashes or other delimiters.

Maybe you can use underscore to delimit if you need it, e.g. these two links go to the same place without any problem:

https://meta.discourse.org/t/topic-url-to-include-its-category/39996

https://meta.discourse.org/t/_support_topic-url-to-include-its-category/39996

your URL with question mark at the end might work - seems to work here. Not sure what the effect of that is.

https://meta.discourse.org/t/where-can-i-create-tags/31094/?category=support
「いいね!」 3

これはサイトの設定やプラグインを通じて可能ですか?

こんにちは。

Discourse については、フォーラム全般についても、まったくの初心者です。スレッドの URL にカテゴリを含めることができるかどうか、また、それが可能かどうかを知りたいです。

私の意味は、現在、カテゴリの URL が次のようになっていることです。
https://randomname.discourse.group/c/category-name/6

しかし、そのカテゴリ内のスレッドをクリックすると、カテゴリへの参照が含まれていない URL になります。
https://randomname.discourse.group/t/what-a-great-thread/18

検索して回答を理解しようとしましたが、あまりうまくいきませんでした。

助けていただけると幸いです。

よろしくお願いします。

命名規則を正しく理解することは良いことです。Discourse では、スレッドはトピックと呼ばれます。

カテゴリとの関連付けは暗黙的であるため、必要ありません。

さらに、トピックが新しいカテゴリに移動された場合、URLは古くなり、実質的に無効になります。

どうしても必要な場合は、クエリ文字列パラメータを追加しても通常は問題ありません。

しかし、ユースケースは何ですか? 何を達成しようとしていますか?

「いいね!」 2

サードパーティ製のソフトウェアを利用してフォーラムをスクレイピングしています。クエリに制限があるため、ソフトウェアがスレッド(トピック)をスクレイピングする際に、それがどのカテゴリに属するかを推測する必要があります。これは、URLを通じて行われているようです。

アプリの観点からは、指摘したように意味をなしませんが、プラグインまたはスクリプトを作成してすべてのURLを変更できる可能性があります。

カテゴリは、クローラービューのHTMLで明確になっていると思いますので、代わりにツールを変更してそれを活用できるのではないでしょうか?

「いいね!」 2

もし、あなたがスクレイパーに明示的にURLを提供し、それらからカテゴリを抽出する方法を定義しているのであれば、Tobiasが提案したハックを使用できるかもしれません。例えば、/t/category-name__topic-slug/topic-id のように指定できます。Discourse は、topic-id のみに基づいて、最終的なURLに301リダイレクト応答を返します。

ただし、スクレイピングプロセス中にURLを取得する場合、スクレイピング戦略の制限を満たすためだけの変更としては、かなりの労力がかかるように思えます。

私の知る限りでは、そうではありません。プラグインで /t/category-name/topic-slug/topic_id ルートを提供することは可能かもしれませんが、Discourse内のトピックへのすべての参照がこの代替ルートを優先するようにするオプションを設けることは、(私個人としては)ほとんど利益がないのに、やりすぎのように思えます。

「いいね!」 2

ちょっとした考えですが、RSSフィードの使用を検討したことはありますか? DiscourseにはRSSフィード出力が組み込まれています。

「いいね!」 2

それはどのようなソフトウェアですか?URLを変更せずに、いくつかの方法でカテゴリを取得できます(HTMLとJSONで)。

JSONの場合、こちらをスクレイピングする代わりに:
https://meta.discourse.org/t/topic-url-to-include-its-category/39996

こちらをスクレイピングしてください:
https://meta.discourse.org/t/topic-url-to-include-its-category/39996.json

そして category_id フィールドを探してください。

別の可能性としては、Data Explorerを使用して必要なものを抽出する方法があります。

「いいね!」 4