So ersetzen Sie Text und aktualisieren Sie dynamisch

Wir müssen bestimmten Beiträgen (etwa 100 und es werden mehr) einen Haftungsausschluss oder eine Offenlegung hinzufügen. Die Offenlegung kann sich in Zukunft ändern, daher möchte ich [DISCLOSURE-GOES-HERE] zu jedem der 100 Beiträge hinzufügen. Wir können sie manuell hinzufügen, das ist kein Problem. Aber wenn wir unsere Offenlegung in Zukunft aktualisieren, möchte ich sie nur an einer Stelle ändern.

Was ich versucht habe:

  1. Gemischte Wörter (Watched Words). Das Problem ist, dass bestehende Beiträge die aktualisierte Offenlegung erst anzeigen, wenn Sie den Beitrag bearbeiten. Das widerspricht dem Zweck dieses Anwendungsfalls.

  2. Javascript zum Ersetzen von innerHTML des Elements. Ich muss es falsch gemacht haben – das verursachte Fehler beim Ersetzen eines Kindknotens:

    <script type="text/discourse-plugin" version="0.8">
        var disclosures = "• Wichtige Offenlegungen: Wir sind nicht verantwortlich usw. usw."
        api.decorateCooked($elem => {
            var el = $elem[0];
            el.innerHTML = el.innerHTML.replace('[DISCLOSURE-GOES-HERE]', disclosures);
        });
    </script>
    
  3. Auto-Linkify Theme Component. Ich liebe es für andere Dinge, aber ich möchte den Offenlegungstext anzeigen, nicht einen Link zur Offenlegung.

  4. Ich weiß, dass man Text von der Rails-Konsole aus ersetzen kann, aber ich möchte, dass Moderatoren ihn pflegen.

Ich habe ähnliche Dinge basierend auf dem Code der Auto Linkify Words-Komponente gemacht.

1 „Gefällt mir“

Wenn Sie die Haftungsausschlusserklärung nicht oft ändern, können Sie sie möglicherweise alle Beiträge, die einem Muster entsprechen, erneut rendern, wenn Sie sie ändern.

Diese Lösung hat den Vorteil, dass dieser Text nicht bei jedem Aufruf jedes Beitrags neu gerendert wird.

5 „Gefällt mir“

Es gibt auch einen textlichen Ansatz, der hier helfen kann: Machen Sie die Offenlegungsnachricht “zeitlos” und verlinken Sie auf die Details der Warnung. Anstatt…

Wichtige Offenlegungen: Wir sind nicht verantwortlich, haftbar oder auch nur kenntnisreich über die Behauptungen in diesem Thema.

…wählen Sie etwas wie:

Wichtige Offenlegungen: Dieses Thema enthält Inhalte, die möglicherweise mehr Kontext benötigen, bereitgestellt unter Offenlegungsliste

Dann kann der Großteil Ihrer Aktualisierung auf dieser einen Seite erfolgen, die auch ein Thema in Discourse sein könnte (einfach zu bearbeiten/aktualisieren!). :slight_smile:

1 „Gefällt mir“