如何替换文本并动态更新

我们需要在某些帖子(大约 100 篇,并且还在增加)中添加免责声明或披露。披露信息将来可能会更改,因此我想在所有 100 篇帖子中都添加 [DISCLOSURE-GOES-HERE]。我们可以手动添加,这没问题。但将来更新披露信息时,我只需要在一个地方进行更改。

我尝试过的方法:

  1. Watched Words。问题是,现有帖子在编辑之前不会显示更新后的披露信息。这不符合此用例的目的。

  2. 使用 Javascript 替换元素的 innerHTML。我可能做错了——这导致了关于替换子节点的错误:

    <script type="text/discourse-plugin" version="0.8">
        var disclosures = "• 重要披露:我们不负责,等等,等等。"
        api.decorateCooked($elem => {
            var el = $elem[0];
            el.innerHTML = el.innerHTML.replace('[DISCLOSURE-GOES-HERE]', disclosures);
        });
    </script>
    
  3. Auto-linkify 主题组件。我喜欢它用于其他功能,但我希望显示披露文本,而不是指向披露信息的链接。

  4. 我知道可以从 rails 控制台替换文本,但我希望版主来维护它。

我已经基于Auto Linkify Words组件中的代码做了一些类似的事情。

1 个赞

如果你不经常更改免责声明,那么在更改时可以重新烘焙匹配模式的所有帖子

这个解决方案的优点是不需要在每次查看时重新渲染每个帖子的文本。

5 个赞

有一种文本方法也可以提供帮助:使披露消息“常青”,并链接到警告的详细信息。而不是……

重要披露:我们不对本主题中的声明负责、承担责任,甚至不了解。

……而是选择类似这样的内容:

重要披露:本主题包含的内容可能需要更多背景信息,请在 披露列表 处查看

然后,您的绝大部分更新将集中在这一页上,这一页也可以是 Discourse 中的一个主题(易于编辑/更新!)。:slight_smile:

1 个赞