分类破坏且无法删除

你好。希望这里是报告此问题的正确位置——我在搜索时未找到其他类似帖子,我认为这确实属于一个漏洞。

发生了什么

我本打算为 Discourse 论坛中的某个分类创建一个新的子分类。由于分心,我犯了两个错误:

  1. 忘记将子分类关联到父分类。
  2. 混淆了子分类的名称(Name)和子分类的标题(Title)。我们最近开始在子分类名称中使用表情符号,结果名称变成了 ‘fis-mec-i-staff’(这原本应该是标题),而标题变成了 ‘Staff :toolbox:’。

我并未察觉自己犯了这些错误,便创建了新分类,它在论坛中按预期显示。然而,当我尝试进入该分类以删除它时,却永远卡在这个界面上:

由于页面上未显示其他内容,我无法访问删除分类所需的管理工具。我已尝试过不同的浏览器,但它们都在分类页面的空白屏幕上卡住。

可能的解决方案

是否有办法从分类外部删除分类?这样可以绕过加载分类页面的问题。

感谢您的时间。非常感谢您对此问题的任何见解!

编辑:我在想,是否是因为在分类标题中加入了表情符号导致问题,因为它被转换成了(可能的?)元字符,例如 ‘%’。

能够创建一个损坏的分类听起来像是个 bug。

当你提到“子分类标题”时,你指的是分类 slug 字段吗?

是的,这听起来像是问题的根源。你可以尝试进入你的 slug 生成方法 站点设置。如果当前设置为 ascii,请尝试暂时将其更改为 encoded。这可能会让你能够访问并编辑该分类。

如果这不起作用,请告诉我们。如果无法通过用户界面修复该问题,我们可以从你网站的后台进行修复。

3 个赞

能够创建一个损坏的分类听起来对我来说像个漏洞。
当你提到“子分类标题”时,你指的是分类 slug 字段吗?

啊,是的,我指的就是那个。我说“标题”时指的是"Slug"。我只是觉得翻译稍微有点直译。

是的,这听起来像是问题的根源。你可以尝试进入你的 slug 生成方法 站点设置。如果它被设置为 ascii,请尝试临时将其更改为 encoded。这可能会让你能够访问并编辑该分类。

仅仅将 slug 生成方法改为“encoded”并没有让我进入该分类,但这给了我一个想法。当我尝试进入那个损坏的分类时,URL 并没有更新为分类的 URL,而是显示了主站的 URL。所以我怀疑问题在于,由于分类 slug 中包含元字符,处理 URL 生成的代码片段未能正确解析分类名称。于是,我保持 slug 生成方法为“encoded”,然后尝试了一件非常奇怪的事情,说不定能行。我在 URL 地址栏里放了一个表情符号:

地址栏里确实是工具箱表情符号。

结果……成功了。我进入了该分类,并通过用户界面顺利将其删除。

这确实是一个有趣且……令人豁然开朗的夜晚 :joy: 非常感谢你的帮助!

3 个赞