当主题存在其他四个标签中的任何一个时,需要添加标签

大家好,

我最近对我的论坛进行了一些重构,并开始使用标签。

我正在努力解决的一个问题是(我知道这不是原生功能,但也许有简单的插件?)当创建一个带有标签“sync1”、“sync2”、“sync3”或“sync4”的新主题时,我还需要附加标签“apim”。有人知道我该如何做到这一点吗?

不幸的是,我的 Ruby 技能有所欠缺。
我看到过这两个链接:

但我不知道如何将其改编为仅检查主题上是否存在这 4 个标签中的任何一个,而不是像这些示例那样进行检查。

基本上,如果粉色标签中的任何一个存在于主题中,就应该自动添加绿色标签。

DiscourseEvent.on(:topic_created) do |topic|
  guardian = Guardian.new(Discourse.system_user)
  required_tag_names = [”sync1”, “sync2”, “sync3”, “sync4”]
  DiscourseTagging.tag_topic_by_names(topic, guardian, [\"apim\"], append: true) if topic.tags.exists?(name: required_tag_names)
end

你需要这个 :arrow_up: 代码。

编辑:你也可以通过添加一个标签组并将“apim”设置为父标签来强制执行。在这种情况下,用户只能在选择父标签“apim”后选择“sync”标签。


我认为如果我们允许用户先选择子标签,然后自动添加父标签,那会更有用 :person_shrugging: 大多数最终用户不会知道父标签的要求。

2 个赞

太好了,我通常会自己解决这些问题,但 Ruby 不是我的专长,我感觉会有人在几分钟内就给出一个例子 :slight_smile:

现在我只需要弄清楚如何将它添加到插件中,但我确定这很简单。

我同意,有时选择一个会添加父级的子标签可能是首选结果。

感谢您的帮助。

编辑:插件已创建并按预期工作,非常感谢您的帮助!

1 个赞

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.