JQ331
1
我想将一些主题设置为其他主题的子主题。
假设我有“主题 A”。在主题 A 的页面上,我会放一个“创建子主题”的按钮。这将允许用户创建一个新主题“主题 B”,而主题 B 将是主题 A 的子主题。
从用户体验的角度来看,这意味着:
我也可以在主题 A 的页面上放一个“查看主题 A 的所有子主题”的按钮,点击后会跳转到主题 A 子主题的列表,例如主题 B 以及任何其他属于主题 A 子主题的主题。
实现这一点的最佳方式是什么?(我假设我需要在插件中实现,这没问题。)
注意,我只需要一层子主题,不需要多层嵌套(如 这里 所述)。
以下是我认为可能实现该功能的一些方案:
分类(但这可能不是最佳方案)
分类可以提供与我设想类似的功能,但随着带有子主题的主题数量增加,这种方法可能会变得过于复杂(为每个父主题创建一个新分类似乎有些大材小用)。
或者
标签
目前我能想到的最佳方案是使用标签。因此,当你在主题 A 上点击“创建子主题”时,会打开一个新主题,并通过程序自动添加一个隐藏标签(例如“主题-A”),该标签链接到主题 A。然后,当你点击“查看主题 A 的所有子主题”时,系统会搜索标签“主题-A”。
这个方案看起来相当简洁,唯一的缺点是会产生大量标签(基本上每个主主题对应一个标签,数量可能会很多)。
或者
主题的自定义字段
我考虑的另一种方案是为主题创建自定义字段,该字段是一个数组,包含该主题所有子主题的 ID。这也行得通,但编码可能会稍微复杂一些。
例如,我需要在创建子主题后更新主主题的自定义字段;同时,我需要创建一种新的搜索方式——搜索主主题自定义字段数组中的所有主题,而不是直接使用预建的标签搜索功能。
我是否遗漏了其他解决方案?
oca
2
我看到另一个可能可行的解决方案,无需大量代码工作。
通过 自定义向导插件,您可以在一个流程中执行多个操作。在这种情况下,您可以让用户通过向导输入其子主题,该向导将:
- 为子主题创建一个新话题
- 在主话题中创建一个回复并链接到该子主题
通过为所有主帖添加一些自定义 CSS(您可以添加一个 CSS 类,以便通过分类或标签进行选择),您可以修改回复的外观以符合您的设想。您也可能通过向导找到一种方法,为回复添加一个参数,从而让您仅筛选出自动回复。
如果您不喜欢回复方案,我认为自定义向导也可以为创建好的子主题添加标签。
JQ331
3
我没想到这一点。谢谢。我目前缺失的关键部分,是在子主题中包含一个能链接回主主题的元素,例如与子主题关联的标签(如“Topic-A”)。
您是否认为,向导在提交时,会通过 API 调用创建该标签并将其与子主题关联?(我对向导插件不太熟悉。)
此外,我认为向导插件的一个局限在于,它会打开一个独立的页面,该页面没有我网站的常规页眉——换句话说,我认为任何包含向导的页面,其外观都会与应用的其余部分大不相同,这在这种情况下可能会让用户感到困惑。
我也在想,我希望有一个级别的子主题。这可以实现一个级别的嵌套/层次结构,同时保持界面整洁,避免出现大量嵌套对话。
我可能会这样使用它:
您在创建插件或利用当前 Discourse 功能实现这一点方面有进展吗?
JQ331
5
我唯一能想到的方法是使用主题自定义字段。例如,子主题可以有一个链接回主主题的自定义字段。然后,您可以搜索所有以该主主题作为自定义字段值的ョピック。我还没有完全实现的插件,但我能够使用我在这里提到的代码在开发中基本实现它:Retrieve Topics based on custom field? - #12 by JQ331
是的,我想象一下,如果我们创建一个名为“topic-parent”或类似的自定义主题字段,那么将有很多方法可以利用它。我会更深入地研究您分享的链接,并希望在此过程中学习一些 Ruby。谢谢!