Comment remplacer du texte et mettre à jour dynamiquement

Nous devons ajouter une clause de non-responsabilité ou une divulgation à certains articles (environ 100 et cela continue d’augmenter). La divulgation pourrait changer à l’avenir, j’aimerais donc ajouter [DISCLOSURE-GOES-HERE] à chacun des 100 articles. Nous pouvons l’ajouter manuellement, ce n’est pas un problème. Mais lorsque nous mettrons à jour notre divulgation à l’avenir, je ne veux la changer qu’à un seul endroit.

Ce que j’ai essayé :

  1. Mots clés. Le problème est que les articles existants n’affichent pas la divulgation mise à jour tant que vous n’éditez pas l’article. Cela va à l’encontre de l’objectif pour ce cas d’utilisation.

  2. Javascript pour remplacer innerHTML de l’élément. J’ai dû mal faire - cela a causé des erreurs concernant le remplacement d’un nœud enfant :

    <script type="text/discourse-plugin" version="0.8">
        var disclosures = "• Divulgations importantes : Nous ne sommes pas responsables, etc., etc."
        api.decorateCooked($elem => {
            var el = $elem[0];
            el.innerHTML = el.innerHTML.replace('[DISCLOSURE-GOES-HERE]', disclosures);
        });
    </script>
    
  3. Composant de thème Auto-linkify. Je l’adore pour d’autres choses, mais je veux afficher le texte de la divulgation, pas un lien vers la divulgation.

  4. Je sais que vous pouvez remplacer du texte depuis la console Rails, mais je veux que les modérateurs la maintiennent.

J’ai fait des choses similaires en me basant sur le code du composant Linkify Words.

1 « J'aime »

Si vous ne modifiez pas souvent la clause de non-responsabilité, vous pouvez alors Rebâtir toutes les publications correspondant à un modèle lorsque vous la modifiez.

Cette solution a l’avantage de ne pas ré-interpréter ce texte sur chaque publication à chaque fois qu’elle est vue.

5 « J'aime »

Il existe une approche textuelle qui aidera également : rendre le message de divulgation « intemporel » et lier les détails de l’avertissement. Plutôt que…

Divulgations importantes : Nous ne sommes pas responsables, ni même au courant des affirmations de ce sujet.

… optez pour quelque chose comme :

Divulgations importantes : ce sujet contient du contenu qui pourrait nécessiter plus de contexte, fourni à Liste des divulgations

Ensuite, la majeure partie de votre mise à jour peut être cette page unique, qui pourrait également être un sujet dans Discourse (facile à modifier/mettre à jour !). :slight_smile:

1 « J'aime »