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

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

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

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

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

理解插值键

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

例如,Account Created 电子邮件模板的插值键示例:

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

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

但是,文本和电子邮件模板还允许使用一些额外的插值键。

常规插值键

以下是一些您可以在所有电子邮件模板中使用的常规插值键列表:

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

只要它们具有 subject_templatetext_body_template 子键,您也可以在文本和电子邮件模板自定义中使用所有 system_messages.welcome_user 键,因为所有这些都应由 SystemMessage 类处理(请参阅 system_message.rb 查看相关的 Discourse 代码)。

有关允许的自定义插值键的完整列表,请参阅 Discourse 源代码 translation_override.rb 中的 ALLOWED_CUSTOM_INTERPOLATION_KEYS

9 个赞

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

4 个赞

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

2 个赞

您好!

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

谢谢!

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

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

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

1 个赞

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

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

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

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

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

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

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