用于自定义文本和系统邮件模板的插值键

:bookmark: 本指南详细介绍了用于自定义 Discourse 中文本和系统电子邮件模板的插值键。

:person_raising_hand: 所需用户级别:管理员

自定义 Discourse 中的文本自定义特定电子邮件模板 时,您可能注意到某些模板中提供了占位符变量。

在 Discourse 中,我们将这些称为插值键

理解插值键

插值键是 Discourse 某些模板中可用的占位符。它们允许您将动态内容插入到文本和电子邮件模板中。

Account Created(账户已创建)电子邮件模板的插值键示例:

这些键(例如 %{username}%{site_name})将在发送邮件时被实际数据替换。

通常,这些占位符可以在其所属的模板内移动,但仅在该模板中可用,不能移动到其他不同的模板,因为它们都由与相应模板绑定的服务器代码支持。

然而,某些模板组允许在默认模板已有的基础上添加额外的插值键。

额外的插值键

欢迎用户系统消息

对于 system_messages.welcome_user 模板,您可以添加以下额外的键:

  • username:用户名
  • name:用户全名
  • name_or_username:用户的全名或用户名

这些值由 SystemMessage 类在运行时提供(请参阅相关的 Discourse 代码:system_message.rb)。

用户通知电子邮件

对于 user_notifications 及相关电子邮件模板(包括 unsubscribe_mailing_listunsubscribe_link),有许多额外的键可用,包括 topic_titleusernamesite_nameurlunsubscribe_url 等。

有关所有允许自定义插值键的完整最新列表及其适用的模板组,请参阅 translation_override.rb 的 Discourse 源代码 中的 ALLOWED_CUSTOM_INTERPOLATION_KEYS

9 个赞

那不正确。目前这仅适用于 system_messages.welcome_user,但我们可以将其扩展到所有其他键。这是 pr-welcome 的材料。

4 个赞

感谢您的指出,这已在指南中更新。

2 个赞

您好!

我该如何修改其中一些插值键的值?例如,%{search_answer}

谢谢!

您好!
它说这个密钥无效:

附注:
我是在文本中替换,而不是在电子邮件中替换(这有区别吗)?谢谢!

我不认为那些是全球性的并且可以随处免费使用。

1 个赞

谢谢 @Jagster!我正在文本自定义中使用它们,所以根据主题帖子,它应该能起作用?

主题实际上是关于电子邮件模板和那些文本。因此,您不能在正确的上下文之外使用插值键。这就是为什么我们有用于电子邮件的其他键,用于某些 AI 提示等的其他键。

当然,插件可以做很多事情,但这次不能开箱即用。

免责声明:我只是另一个最终用户,我也可能大错特错。但我很确定我是对的——这就是为什么您的尝试不起作用 :man_shrugging:

好的,非常感谢您的支持。看起来即使在电子邮件模板中使用它,它也不起作用:

我的猜测是,您可以在“用户操作…”模板中使用“%{username}”,而所有其他模板都不支持它。

但明天所有专家醒来后我们就会知道。