在主题中获取类别的完整描述

据我所知,描述信息(并在此处维护)存储在第一个帖子的第一部分中。

我想在分类的“顶部”和“最新”按钮附近添加链接。由于主题无法为每个分类单独配置,我本想将链接数据直接添加到分类描述的“隐藏部分”——因为在分类列表中,只显示分类描述的第一部分。

数据格式如下:{TAG,linkText,linkTitle,linkHref}。

抱歉,我觉得这个方案可能不是最好的:

是否可以在主题或组件中获取分类描述文本的完整数据?

提前感谢。

是的,这正是 Category Banners 所实现的功能。

嗯,我认为

  • category.description 返回的是格式良好的分类描述
  • category.description_text 返回的是纯文本数据

但两者都只返回了描述的第一章,而不是包含该描述的整个分类首帖。我是否遗漏了什么?

哦,这是预期行为。Discourse 在 UI 的各个位置都仅使用“关于”主题的第一段作为分类描述。

如果您需要其他内容,则需要额外调用一次 API 来获取。

在主题组件中可以实现这一点吗?您有示例吗?

Topic List Sidebars 正好实现了这一点!

如果目标是在特定分类页面上有条件地渲染这些链接,那么我建议退一步,尝试另一种方法。

假设你有一个如下所示的设置:

target_category, link_text, link_title, link_href

然后你可以像这样进行操作:

api.addNavigationBarItem({
  displayName: text, // 链接文本
  name: title, // 链接标题
  href: href, // 链接地址
  customFilter: category => {
    return (
      category && category.name.toLowerCase() === TARGET_CATEGORY.toLowerCase() // 目标分类
    );
  }
});

这里的关键部分是 customFilter,因为我认为这正是你想要的功能。

如果你有多个链接,则需要将其包裹在一个 forEach 循环中。

感谢 @Falco。这正是我所需要的。

感谢 @Johani。我考虑过你的建议。不幸的是,我们的分类数量庞大,如果在设置中进行配置,将会非常庞大且难以管理。因此,我编写了这个主题。

我已经成功实现了它。在添加对 parent_categories 的支持并修复了一些小问题之后,我将对其进行文档化,并以“正式的方式”发布。

最后,我想这就是全部了。请随意使用。向所有参与 Discourse 开发的人致以大大的“感谢”。工作做得太棒了。

主题组件链接: