トピックビューをフィルタリングするためのクエリ文字列の使用

:bookmark: このガイドでは、あらゆる Discourse サイトでカスタムフィルタリングされたトピックビューを取得するためにクエリ文字列を使用する方法を説明します。クエリ文字列は、すべてのユーザーが特定のトピックリストを表示したり、ユニークなトピックリストのカスタムリンクを作成したり、特定の基準を満たすトピックを検索したりするために使用できます。

:person_raising_hand: 必須ユーザーレベル: 全ユーザー

クエリ文字列は、ほとんどの Discourse URL の末尾に追加できるテキストで、カスタムフィルタリングされたトピックビューを取得できます。特定のトピックリストの表示、ユニークなトピックリストのカスタムリンクの作成、特定の基準を満たすトピックの検索に役立ちます。

クエリ文字列の理解

クエリ文字列は、URL の末尾に疑問符 (?) で始まり、その後にパラメータとその値が続きます。たとえば、次のようになります。

https://meta.discourse.org/?status=open

この URL では、?status=open がクエリ文字列です。

クエリ文字列を使用した場合に表示されるトピックのリストは、引き続きユーザーアカウントからアクセス可能なトピックに限定されます。クエリ文字列を使用するために有効にする必要がある設定はありません。

使用可能なクエリ文字列パラメータ

すべての Discourse サイトで使用できるクエリ文字列パラメータを次に示します。

ステータス

?status=_ を使用して、特定のステータスのトピックを表示します。

  • open: 開いているトピックのみ
  • closed: 閉じているトピックのみ
  • archived: アーカイブされたトピックのみ
  • unlisted: リストにないトピックのみ
  • deleted: 削除されたトピックのみ

検索

?search=_ を使用して、検索結果の全ページを作成します。_ を検索用語に置き換えます。

状態

?state=_ を使用して、特定の状態のトピックを表示します。

  • muted: ミュートしたトピックを表示
  • normal: 通常に設定したトピックを表示
  • tracking: トラッキングしているトピックを表示
  • watching: ウォッチしているトピックを表示

昇順

?ascending=true を使用して、トピックを日付の昇順で表示します。デフォルトは降順です。

並べ替え

?order=_ を使用して、さまざまな基準でトピックを降順で表示します。

  • likes: いいねの数で
  • op_likes: 元の投稿のいいねの数で
  • views: 表示回数で
  • posts: 投稿数(返信数)で
  • activity: 最終アクティビティの日付で(bumped_at 日付を含む)
  • posters: 参加者数で
  • category: カテゴリ名で(Z-A)
  • created: トピック作成日(新しいトピックから順)で

投稿数フィルター

  • ?max_posts=_: _ 以下の投稿数のトピックを返します
  • ?min_posts=_: _ 以上の投稿数のトピックを返します

トピック ID

?topic_ids=_ を使用して、特定の ID のトピックのリストを表示します。カンマ区切りのトピック ID 文字列を受け入れます。

カテゴリ

?category=_ を使用して、特定のカテゴリのトピックのリストを表示します。カンマ区切りのカテゴリ ID 番号の文字列を受け入れます。

タグ

?tags=_ を使用して、タグでトピックをフィルタリングします。たとえば、https://meta.discourse.org/?tags=how-to は、how-to タグが付いたすべてのトピックを表示します。

プラグイン固有のパラメータ

一部のプラグインは、追加のクエリ文字列パラメータを追加します。

Solved プラグイン

Solved プラグインがインストールされている場合:

  • ?solved=yes: 解決済みのトピックを表示
  • ?solved=no: 未解決のトピックを表示

Assign プラグイン

Assign プラグインがインストールされている場合:

  • ?assigned=username: 特定のユーザーに割り当てられたすべてのトピックを表示
  • ?assigned=*: すべてのユーザーに割り当てられたすべてのトピックを表示
  • ?assigned=me: 現在のユーザーに割り当てられたすべてのトピックを表示
  • ?assigned=nobody: 未割り当てのすべてのトピックを表示

クエリ文字列の組み合わせ

アンパサンド (&) を使用して、複数のクエリ文字列を組み合わせることができます。複数のクエリ文字列を使用する場合、最初のパラメータのみに ? シンボルが必要です。たとえば、次のようになります。

https://meta.discourse.org/?max_posts=1&status=closed

この URL は、投稿数が 1 つだけの閉じているトピックを表示します。

高度な検索ページの利用

高度な検索ページを使用して、これらの URL をグラフィカルユーザーインターフェイスで構築し、結果の URL をコピーすることもできます。一部の検索フィルターは、検索コンテキスト外ではクエリ文字列パラメータとして機能しない場合があることに注意してください。

追加リソース

「いいね!」 18

GUIを使用してこれらのURLを構築し、URLをコピーするだけでは、高度な検索ページを使用できませんか?

「いいね!」 1

検索フィルターの : をクエリ文字列の = に置き換えるだけで、同じパラメーターのように思えますが、一部の検索フィルターは、検索外のクエリ文字列パラメーターとして使用すると機能しません。

そのため、完全なリストはこのドキュメントにあると思います。ただし、確実にするために、それらが参照されている Discourse のどのファイルにあるかを確認したいと思います。

編集:現在 /filter ルートがあり、さらに多くのフィルター基準があります。

「いいね!」 3

Solved プラグインをお持ちの場合は、次を使用することもできます。

?solved=yes
?solved=no

「いいね!」 3

Assign 用にもいくつかあると思います。

追加しておきますね。:+1:

「いいね!」 3

推測ですが、タグにも使用できるのではないでしょうか?

素晴らしい方法

「いいね!」 2

はい、クエリ文字列を使用してタグでフィルタリングするために、Discourse URL に ?tags=_ を追加できます。

たとえば、https://meta.discourse.org/?tags=how-to は、Meta のすべての how-to タグにリダイレクトされます。

「いいね!」 2

クエリ文字列で否定(除外)フィルターを使用することは可能ですか?現在、高度な検索では、接頭辞に - を付けて行います。

-tags: smth

しかし、これはクエリ文字列では不可能です。

新しい /filter ルートを使用すれば、間違いなく可能です。

例えば https://meta.discourse.org/filter?q=-tags%3Aofficial%20%20category%3Aplugin

「いいね!」 3

ありがとうございます!複数のステータス(OR)で検索することは可能でしょうか?色々な方法を試しましたが、全くサポートされていないようです。例えば、オープン、クローズド、アーカイブ済みのいずれかのステータスを持つトピックがあるとします。アーカイブ済みのものを除外したい、つまりオープンまたはクローズドを検索したいだけです。これまでに試したことは以下の通りです。

  • 高度な検索:status:open,closed
  • 高度な検索:status:open status:closed
  • クエリ文字列:?status=open,closed

どれも機能しませんでした。