创建私有模板的功能

自新的 Discourse Templates 插件推出以来,我一直很喜欢将回复模板存储在主题中,并使用专门的模板类别这一新功能。这使得查看和编辑模板变得容易,同时还能根据需要过滤、标记、编辑和排序现有模板。

然而,目前一次只能选择一个模板类别,因此站点上的所有模板都由有权访问已设置模板类别的所有用户共享。

此外,如果用户想创建一个只有他们自己可以访问的模板,目前没有办法在不修改模板类别中所有模板的访问权限的情况下做到这一点。

功能请求

基于这些观察,我认为许多不同类型的 Discourse 用户可以从以下几项功能中受益:

  1. 能够创建个人私有模板,只有创建模板的用户才能访问和查看。
  2. 能够创建私有模板,供站点上的两名或多名用户访问,但仍对其他人隐藏。

示例用例

在不同情况下使用此功能的一些方法。

  • 用户想为自己创建个人模板,但不想用与整个站点无关的模板来充斥主要的模板类别。
    • 例如:Alex 的公司使用 Discourse 作为支持平台,他们想将对所有可能客户问题的答案存储为模板。即使模板从未被使用过,Alex 也可以在他们的个人模板中参考未来的相关客户问题,或者回忆起他们可能已经有一段时间没见过的知识——即使模板从未被使用过。
    • 例如:Alex 将 Discourse 用作其主要(非 Discourse)网站上销售的产品和服务的社区论坛。Alex 创建了一个仅供他们自己每周五在其 Discourse 站点上发布的帖子的模板,以帮助建立参与度。
  • 供整个团队共享的模板,但不供整个公司共享。
    • 例如:Alex 是一名软件开发人员,他们的团队经常需要处理多个不同的内部任务集。软件开发团队有一个模板,其中包含一个清单或其他可操作的项目,供团队中的每个成员完成。
    • 例如:Alex 管理着一个使用 Discourse 作为支持平台的团队。Alex 创建了只有支持团队可以访问的模板,以帮助团队更快地响应客户。
  • 团队中的两名或多名成员希望访问相同的模板,但不需要与整个团队共享这些模板。
    • 例如:Alex 在支持部门工作,John 在软件开发部门工作,他们的公司使用 Discourse 与客户沟通。John 刚刚修复了一个错误,所以他决定创建一个模板来解释他对公司软件所做的更改以修复该错误——然后他将此模板与 Alex 共享,以便他们可以通知客户有关更新的信息。一旦所有客户都收到通知,该模板就可以被删除。

我相信这里还有更多未提及的用例。

平衡的必要性

考虑到这一切,并且无论存在什么用于公开或私有模板的功能,站点的用户仍然需要决定——“模板应该与谁共享?”

在“整个站点的每个人每天都会使用此模板”和“某人曾一次为特定任务使用过此模板,现在再也不使用了”之间存在一个平衡。在第一种情况下,当然我们希望此模板与所有人共享,但在后一种情况下,如果模板被共享,它只会充斥模板列表,并且如果没有关于什么是“可接受”的整个站点的模板的标准,模板列表可能会很快变得压倒性、过时或不相关。

标签怎么样?

有了 Discourse Templates,我们现在可以为每个模板添加标签,以帮助在需要使用模板时进行排序和查找,那么为什么我们还需要个人或团队私有模板呢?为什么支持团队不能简单地为他们的所有模板添加 #support 标签就完事了?为什么 Alex 不能简单地为他们的所有个人模板添加 #alex-templates 标签然后继续?

简短回答:这没有理由不能奏效。用户可以简单地为模板添加标签,然后在尝试提取它们时搜索它们。

长篇回答(实际上只是更多问题):人们在使用模板时是滚动浏览所有模板,还是只搜索他们需要的内容?如果你只是搜索模板,你搜索的模板数量可能不太重要——你只需搜索,然后一旦找到所需内容就可以停止。但是,如果你滚动浏览所有可能的模板,这可能是一项耗时的任务,具体取决于你的站点有多少模板。

如果你的站点很大呢?如果你的站点有 1000 个模板,但你只使用了其中的 10 个,为什么你还需要看到所有额外的模板?这些对你来说不就是额外的混乱吗?好吧,有点极端,但仍然,当模板数量超过某个阈值时,对于特定人群或整个站点来说,模板就太多了

另外,如果你不知道该搜索什么呢?如果你刚刚开始管理某个特定的 Discourse 站点,并且不知道所有模板的名称,而且有 100 个模板?如果你正在搜索一个“站点介绍”模板,但有人将你正在寻找的模板称为“欢迎”(或类似情况),而你的搜索没有任何结果呢?

这里有很多需要考虑的问题,而且不一定有正确的答案。

看起来这里的其他用户可能也有想法。虽然这与现在已过时的 Canned Replies 插件有关,但表达的想法仍然适用于此处:

可能的实现方式

当我们考虑实际的机制时,有人提到 @saquetim 可能更了解如何最好地实现这一点。

对于个人模板,也许可以发送一个私信给自己 + 特殊标签?

如果你想让几个人访问一个模板,也许你可以发送一个私信给自己和另一个人,并加上一个特殊标签?

也许我们可以选择多个 discourse templates categories

大家对此有什么看法?:thinking:

  • 这样的东西真的有用吗?
  • 我们为什么要创建私有模板的能力?
  • 我们希望如何使用它?
12 个赞

我大量使用模板!我使用 Discourse 模板的方式与使用 Discourse Chat 相同:单独使用、一对一使用,以及在任何可能的群组配置中使用!:v: :sunglasses:

在这些示例中的每一个中,听起来都像是私信 (PM) 的工作方式,我认为这很棒:添加和删除用户及群组的能力……

嗯……也许可以提供一些类似于 Discourse Docs 设置分类和标签的方式的选项。

但是,除了在模板选择器中显示基于分类权限的所有可用模板主题外,它还会加载私信模板。因此,您将根据需要标记所有私信模板,并将它们像普通的私信一样共享(用户和群组)。

:thinking:

4 个赞

哦,这太有用了!

3 个赞

@SaraDev

我真的很喜欢私有模板的想法以及你提出的机制(发送给自己私信 + 标签),我认为这将是一个很棒的功能,可以添加到插件中。但我不太确定是否应该让两个或更多用户通过私信共享这些模板。

让我解释一下原因:

目前,您只能选择一个类别来存储模板,但您可以拥有具有不同权限的子类别,以满足多个组查看不同模板集的需求。这种情况应该已经涵盖了。

此外,我计划增加拥有多个父类别的能力,以实现更好的模板组织和更简单的安全定义。

当您将私信与组(正式或临时)混合在一起时,问题就出现了,因为权限系统变得混乱。标签不像类别那样具有权限。很难检查用户是否可以使用模板,甚至限制他们这样做的能力。

我现在想到的一些需要解决的问题:

  • 哪些用户应该被允许使用私有模板?我认为默认情况下不应允许所有人使用,并且目前使用插件的权限由存储模板的类别定义。这种权限模型不适用于私有模板,我们可能需要一个新的设置,以便管理员可以控制它。

  • 用于将私信标记为模板的标签应该在插件配置中全局定义,还是允许每个用户在用户设置中定义哪个标签应被视为模板?对于多人共享的消息,这该如何运作?

  • 我不太喜欢的一点是,它可能会使查找编辑/讨论模板的位置变得更加困难。用户需要知道它是私信还是主题。这不是一个交易破坏者,但它可能会变得很麻烦。

简而言之:我真的很喜欢个人模板(发送给自己私信),我认为将多人私信用作模板可能会导致一些问题,需要仔细考虑。就个人而言,我倾向于真正私有的模板(只有创建者可以看到),并将群组模板(2 人或更多人)留给类别系统。

6 个赞

我认为,多个父类别以及提议的私有模板(使用私信给自己+标签)将涵盖模板用例的几乎所有情况。

即使是我提到的一些例子,也很难想出两个以上的用户(而不是一个组)需要共享相同模板的情况。

如果两个人想要同一个模板,他们总是可以互相发送私信,然后通过将私信复制粘贴回给自己来将该消息转换为模板,这将是一个小小的额外步骤,但我无法想象这种情况会经常发生。

我认为信任等级可以成为限制私有模板使用范围的好方法,只允许那些可能需要使用它们的人使用。我能想到的一类与私有模板(以及模板一般)相关的问题是,如果用户拥有访问权限,他们可以通过一遍又一遍地发布相同的内容来在网站上制造大量“垃圾信息”,以至于他们的账户可能需要被静音或以其他方式限制,如果情况变得非常糟糕的话。总的来说,模板似乎更像是一个管理员/版主/超级用户的功能,而不是每个人都应该拥有访问权限的功能,只允许更高信任等级的用户使用私有模板将解决这个问题。

我设想在模板插件中有一个设置,允许“信任等级 X”或更高级别的用户使用私有模板。类似于这样,但用于“私有模板最低信任等级”。

我的另一个想法是在每个信任等级组的组设置页面上有一个复选框设置,用于“允许私有模板”,但有一个单一的设置位置可能会更受欢迎,而不是需要编辑多个组设置。

从网站管理员的角度来看,全局定义标签会更容易设置,然后以某种方式告知用户“这是用于私有模板的标签”,使其显而易见。我认为即使私信在多个人之间共享,这也可以奏效,因为私有模板标签是全局定义的,并且在私信模板仅与创建者共享的情况下仍然有效。但是,我不确定这会对检查用户是否可以使用模板产生什么样的影响,因为在这种设计下,每个人都会使用相同的私有模板标签。

这是一个很好的观点,也是我之前没有考虑到的。想想我们目前跟踪在哪里编辑模板的工作流程——如果我正在发布一个包含模板的帖子,并且我想查看实际模板的主题,我能想到的最简单的方法是使用网站搜索来搜索模板名称,然后跳转到该主题。但是,据我所知,您无法使用网站搜索来搜索私信,因此这对于私有模板来说行不通。

也许在发布帖子时,模板选择区域内有一个按钮会很有帮助?像这样:

对于用户来说,将所有模板都放在一个地方肯定会很好,但我不太确定这里的最佳答案是什么。

我很想听听大家对此有什么其他想法。

1 个赞

这是一个非常有趣的观点。 :+1:

我只考虑了员工用户界面的混乱问题。我并没有设想一个模板类别允许普通会员添加/编辑它们的用例。

嗯,我想知道我是否可以在我的网站上创建一个标签 #preferred-templates-maiki,然后我就可以选择它,并且所有我使用的模板都已准备就绪。然后我可以标记很多主题,不仅仅是我自己的…… :thinking:

2 个赞

我不会在那里添加按钮。canned-replies 插件就是这样的。我认为,对于不经常使用的功能来说,界面会显得有些杂乱。

也许创建一个类似于 /top/latest 的路由会更好,这样就可以在一个地方列出所有可用的模板。我们可以设置一个 /templates 路由,你只需点击主题即可打开它。

我在开发插件时也考虑过这个问题。

我知道这可能很方便,但在我看来,它会带来比解决问题更多的问题。

这样标记的主题无法利用分类权限系统来定义用户是否可以使用模板,至少对我来说,模板应该放在一个地方(分类或标签,就像提议的个人模板那样),让处理它们的人都知道它是一个模板。

想象一下,你将第三方的一个帖子标记为模板,然后它被编辑成了你意想不到的内容。你不会意识到模板被更改了,而编辑它的人也不会意识到它编辑的是一个模板。

我不知道,在这种情况下,我更喜欢一个明确定义的流程。

2 个赞

说得有道理! :+1:

我指的是在模板类别中标记主题。这是我们家庭论坛的截图,我标记了我的所有主题 #maiki-templates

我的用例考虑所有人创建模板。但有了标签组,我相信我们对团队使用它们有很好的控制。

在我的家庭中,Clover 和我都会有待勾选的家务清单。将它们全部标记为 #chores 是有意义的,而我负责的模板标记为 #maiki-template,Clover 的标记为 #compulsory-familial-servitude;然后我们可以轻松地按需过滤模板,“插入模板”选择器。

所以……我的用例已经涵盖了。:slight_smile: :+1:

我的私人模板是公开的! :person_shrugging:

2 个赞

我们现在有了私有模板!

它们的运作方式与我们讨论的几乎相同。向自己发送一条私信 + 使用设置中配置的特殊标签对其进行标记,该消息将显示在模板列表中。

从技术上讲,发送给其他用户的消息也可以用作模板,但它们将仅作为模板显示给消息的作者。

7 个赞

很高兴听到这个消息!我很期待尽快尝试一下。

3 个赞

您好 @saquetim
我尝试了此步骤,但似乎不起作用。它是否受最新插件版本的支持?

感谢您的回答,它让我对私有模板的工作方式有了更清晰的了解。:vulcan_salute::smiling_face_with_sunglasses::+1: