Moin
1
2023年8月说明: 此主题中的早期示例包含对不再存在的标签的引用,但空白结果的问题仍然存在。
如果您在手机上访问 https://meta.discourse.org/tags/c/theme/61/theme-component,点击放大镜,搜索例如“topic”,然后点击“搜索标签 Theme component”复选框,会出现两个问题。
一方面,您需要点击两次复选框才能选中它。另一方面,在点击一次或两次复选框后没有搜索结果,而在桌面搜索时有很多结果。
在不勾选复选框的情况下在手机上搜索
https://meta.discourse.org/search?context=tag&context_id=theme-component&q=Topic&skip_context=true
在手机上搜索并勾选复选框一次
https://meta.discourse.org/search?context=tag&context_id=theme-component&q=Topic&skip_context=false
在手机上搜索并勾选复选框两次
https://meta.discourse.org/search?context=tag&context_id=theme-component&q=Topic&skip_context=false
使用桌面视图搜索
https://meta.discourse.org/search?q=topic%20%23theme-component
我知道,我可以在手机上输入 Theme component 来获得搜索结果,但我认为这并不是提供复选框的初衷。
3 个赞
maiki
(maiki)
2
嘿,干得好,@moin。我认为你可能发现了 两个 bug。
- 复选框无法立即生效,并且
- 将搜索范围限定为标签会创建一个 Discourse 返回 403 错误的路由
复选框未选中
在移动设备上,搜索链接会向 URL 添加“context”,这会显示要切换的复选框。在这种情况下,我们正在查看的 URL 是 https://meta.discourse.org/search?context=tag&context_id=theme-component&skip_context=true。
当我们切换复选框时,我们正在更改搜索查询,其中 skip_context 从 true 更改为 false,然后再改回来。这也意味着你可以构造一个默认选中复选框的 URL,例如 <https://meta.discourse.org/search?context=category&context_id=1&skip_context=false>。这一点很重要,因为我注意到这两种状态在加载时表现不同。
skip_context=true
移动视图上的默认设置,复选框不会被选中。通过触摸或键盘与复选框交互会使 URL 变为 skip_context=false,但不会选中复选框。再次单击会选中它,并将“false”保留在 URL 中。
之后,它可以来回切换,并相应地更改 URL。
skip_context=false
加载搜索时,复选框被选中,并且与之交互按预期工作:每次交互都会更改复选框和 URL。
我另外注意到,使用这些复选框还会导致我失去页面焦点,无论 skip_context 的值如何;希望这是导致我们双击问题的同一件事。
我在安全模式和移动设备上重现了此行为。
好的,我将在后续回复中解释标签无法限定范围的原因,以便在需要时可以轻松地将其分开。
4 个赞
maiki
(maiki)
3
搜索标签范围返回 403
这让我感到困惑,因为当我尝试在 meta 上重现它时,我不小心在搜索上下文中加载了一个类别而不是一个标签。这是幸运的,因为当我意识到我的错误时,我至少知道这些上下文的搜索查询是如何生成的。
使用 Theme 和 Theme component 作为示例:
当我们使用标签的搜索上下文时,我们的请求看起来像 \u003chttps://meta.discourse.org/search?q=topic\u0026page=1\u0026search_context[type]=tag\u0026search_context[id]=theme-component\u003e,它返回 403。
当我们使用类别的搜索上下文时,我们的请求看起来像 \u003chttps://meta.discourse.org/search?q=topic\u0026page=1\u0026search_context[type]=category\u0026search_context[id]=61\u003e,它按预期返回结果。
或者,如果我们从高级搜索过滤器中选择一个标签,我们的请求看起来像 \u003chttps://meta.discourse.org/search?q=tags:theme-component\u0026page=1\u003e,并返回带有该标签的结果。
我也能够在安全模式下重现 \u0026search_context[type]=tag\u0026search_context[id]=theme-component 路径返回 403 的情况。
是否存在其他 search_context 类型?我浏览了代码但无法确定;如果存在,我们也可以测试它们。
3 个赞
继续讨论 Discourse 订阅 - 允许预定长度的订阅:
我本来想链接到我创建的带有 subscriptions 标签的帖子,所以我去了标签列表页面,然后从那里搜索。没有结果——见下图。当我从主页面搜索时,它工作正常。问题可能出在复选框上,因为这是一个区别。
1 个赞
我可以确认这一点。我刚刚尝试从 post-voting 标签进行搜索,并勾选了该选项,但找不到任何结果(@提及或其他常规关键字)
Android/Chrome
(尚未在桌面端检查) 我已在桌面端检查过,一切正常。
我没有问题勾选方框,但结果的缺乏似乎是同一个问题。
我已合并这些主题。
(并稍微调整了 OP)。
在此处也做个记录;OP 中的示例标签已不存在,但它们演示的移动端空白搜索结果的问题仍然存在。
我的基本分步操作:
- 在移动设备上,转到 post-voting 主题列表
- 打开搜索并勾选
Search the #post_voting tag 复选框
- 输入肯定会产生匹配项的内容(例如,“comment”或“@JammyDodger”)
- 按下“搜索”
结果:“未找到结果”
预期结果:找到内容
2 个赞
pmusaraj
(Penar Musaraj)
10
2 个赞