好的,这可能是一个奇怪的请求,所以我先在这里解释一下我的困境。
我们有一个 Discourse 实例,拥有大量用户。由于它是在长达二十年的邮件列表基础上构建的,因此有很多用户习惯以“邮件列表模式”使用。
目前我们有几个活跃的类别,但我们在电子邮件主题格式中不使用类别名称,因为所有使用邮件列表的用户多年来收到的邮件都以 [SDL] 开头,并且他们的邮件过滤器会根据该字符串将邮件分类到不同文件夹中等等。
因此,我们的格式字符串如下,其中硬编码了 [SDL]……
%{optional_re}[SDL]%{optional_pm} %{topic_title}
……这个格式三年来一直运行良好。
但现在,我们要将一个老旧的、记录版本控制提交信息的邮件列表迁移到 Discourse 的一个类别中,以享受 Discourse 相比老旧邮件列表带来的诸多好处。这就带来了问题,因为那个邮件列表使用的是不同的标识符(当然是 [Commits])。
所以我现在需要在主题格式字符串中加入某个东西,使其能够唯一标识该类别,用作标识符,而不是硬编码的 [SDL] 字符串。
我不能使用现有的类别 slug 字符串,因为大多数类别都需要使用相同的字符串,而且即使它们不需要唯一(我假设),更改它们也会破坏所有指向我们论坛的现有链接。也不能使用类别名称,因为大多数类别只需要 [SDL],而且它们的名称通常太长,不适合用作标识符。
有什么办法可以解决这个问题吗?如果不行,我们能否在每个类别的设置中添加一个通用字符串,使其能够像 %{optional_cat} 一样在电子邮件主题格式字符串中访问?比如一个默认为空字符串的 %{cat_mailsubj}?
谢谢!
编辑:看来我在 2017 年也曾提出过类似的问题:How to properly alter the database? - #8 by icculus ……是否有更好的方案,还是我应该重新启用那个补丁?