テキストの置換と動的な更新方法

投稿の一部(約100件、さらに増えています)に免責事項または開示を追加する必要があります。開示内容は将来変更される可能性があるため、100件すべての投稿に[DISCLOSURE-GOES-HERE]を追加したいと思います。手動で追加しても問題ありません。しかし、将来開示内容を更新する際には、1か所だけ変更したいと考えています。

試したこと:

  1. Watched Words。問題は、既存の投稿は投稿を編集しないと更新された開示が表示されないことです。このユースケースでは目的が達成できません。

  2. innerHTMLの要素を置き換えるJavaScript。おそらく間違っていたのでしょう。子ノードを置き換えることに関するエラーが発生しました。

    <script type="text/discourse-plugin" version="0.8">
        var disclosures = "• Important Disclosures:  We are not responsible, etc, etc."
        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

テキストアプローチも役立ちます。開示メッセージを「常に最新の状態」にし、警告の詳細へのリンクを貼ります。代わりに…

重要な開示:このトピックの主張について、当社は責任を負わず、法的責任も負わず、知識もありません。

…のようなものにするのではなく:

重要な開示:このトピックには、開示リスト で提供される、より多くのコンテキストが必要なコンテンツが含まれている可能性があります。

その後、更新の大部分はその1ページで行うことができます。それはDiscourseのトピック(編集・更新が容易!)にもなり得ます。:slight_smile:

「いいね!」 1