Kategoriespezifischer Haftungsausschluss

Hallo,

Ich habe versucht, einen Haftungsausschluss für eine bestimmte Kategorie hinzuzufügen. Ich hatte die Idee, ein „Banner“ zu haben – wie
Dies ist der erste Beitrag des Benutzers – lassen Sie uns das neue Mitglied in unserer Community willkommen heißen!
oder
Es ist eine Weile her, seit wir USER gesehen haben – der letzte Beitrag war vor 1 Jahr.
über jedem Beitrag.

Ich habe versucht, dies mit Folgendem zu erreichen:

common/head_tag.html
<script type="text/discourse-plugin" version="0.8">
  api.decorateWidget('post:after', (helper, args) => {
    if (args.topic.category_id === 51) {  // Meine Kategorie
      const $post = helper.find('.cooked');
      const disclaimerText = api.decorateCooked(helper, args, settings.MY_DISCLAIMER);
      $post.prepend(`<div class="disclaimer">${disclaimerText}</div>`);
    }
  });
</script>

Nur um vollständig zu sein, hier ist die

settings.yml
MY_DISCLAIMER:
  type: string
  default: 'Dies ist eine Kategorie, die mit begrenzter Garantie geliefert wird und auf eigenes Risiko verwendet werden sollte.'
  description: Haftungsausschluss für Kategorie

und es gibt auch common/common.scss mit der Klasse .disclaimer darin.

Aber wenn ich das aktiviere, wird der Beitrag selbst nicht mehr angezeigt, der Inhaltsbereich ist einfach leer.

Vielen Dank für jede Hilfe!

1 „Gefällt mir“

Ist es auch im Quelltext leer?

Hallo, willkommen zurück!

Wenn Sie etwas Leeres sehen, liegt das an einem Fehler. find existiert nicht in helper.
Das können Sie normalerweise in der Browserkonsole (F12) sehen.

Sie wollen wahrscheinlich so etwas:

api.decorateWidget('post:before', (helper, args) => {
    if (helper.widget.model.topic.category_id === 51) {
        return helper.h("div.disclaimer", settings.MY_DISCLAIMER)
    }
});

oder mit rohem HTML:

const RawHtml = require("discourse/widgets/raw-html").default;

api.decorateWidget('post:before', (helper, args) => {
    if (helper.widget.model.topic.category_id === 51) {
         return new RawHtml({html: `<div class="container">${settings.MY_DISCLAIMER}</div>`})
    }
});

Sie können diesen Beitrag lesen, der erklärt, wie dieser h-Helfer funktioniert.

Sie können Folgendes tun, wenn Sie HTML vor dem gekochten Inhalt hinzufügen möchten:

api.decorateWidget('post-contents:before', (helper, args) => {
    const { topic } = helper.widget.findAncestorModel();

    if (topic && topic.category_id === 51) {
         return helper.h("div.disclaimer", settings.MY_DISCLAIMER);
    }
});
3 „Gefällt mir“

Danke @Arkshine, das hat sehr geholfen!

Ich habe den folgenden Code verwendet, da ich den Text wie die anderen erwähnten Banner darüber anzeigen möchte.

api.decorateWidget('post:before', (helper, args) => {
    if (helper.widget.model.topic.category_id === 51) {
        return helper.h("div.disclaimer", settings.MY_DISCLAIMER)
    }
});

Viele Grüße!

1 „Gefällt mir“

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.