使用查询字符串过滤主题浏览

: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 将显示只有一帖的已关闭主题。

使用高级搜索页面

您还可以使用高级搜索页面通过图形用户界面构建这些 URL,然后复制生成的 URL。请注意,某些搜索过滤器可能无法在搜索上下文之外作为查询字符串参数工作。

附加资源

18 个赞

您不能使用高级搜索页面通过 GUI 构建这些 URL,然后只复制 URL 吗?

1 个赞

看起来它们是相同的参数(我们只需要将搜索过滤器中的 : 替换为查询字符串中的 =),但有些搜索过滤器在用作搜索外部的查询字符串参数时不起作用。

所以我相信完整的列表在此文档中。不过,我很想知道它们在哪个 Discourse 文件中被引用,以确保这一点。

编辑:现在有一个 /filter 路由,其中包含更多过滤条件:

3 个赞

如果您安装了 Solved 插件,您还可以使用:

?solved=yes
?solved=no

3 个赞

我认为也有一些关于 Assign 的内容:

我会把它们加进去。:+1:

3 个赞

猜猜看,您也可以将此用于标签?

太棒了,如何操作

2 个赞

是的,您可以将 ?tags=_ 追加到 Discourse URL 中,使用查询字符串来过滤标签。

例如,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

但它们都不起作用。