Wie man bei bestimmten Themen im Discourse-Forum einzigartigen HTML-Inhalt unter dem Thema-Body hinzufügt

this.model enthält die Topic-Daten wie die id, den title usw. Sie können diese verwenden.

Um beispielsweise die Topic-IDs 90 oder 38 zuzulassen, würden Sie schreiben:

<script type="text/x-handlebars" data-template-name="connectors/topic-area-bottom/custom-html">
  {{#if (or (eq this.model.id 90) (eq this.model.id 38))}}
    <div class="banner-control">
      <!-- Eindeutiger HTML-Inhalt hier -->
    </div>
  {{/if}}
</script>

Ich empfehle Ihnen jedoch, die Theme CLI zu verwenden und mit geteilten Dateien zu arbeiten.

Es wird schwierig sein, dort weitere Bedingungen hinzuzufügen oder eine Logik zu implementieren. Es wäre möglich, registerConnectorClass zu verwenden, aber das ist veraltet.

Der moderne Weg ist die Verwendung von renderInOutlet mit einer Glimmer-Komponente – zum Beispiel GitHub - discourse/discourse-custom-header-links.
Sie sagen, Sie möchten in einem bestimmten Outlet rendern:

Sie haben die Vorlage hier definiert. Beachten Sie this.shouldShow
https://github.com/discourse/discourse-custom-header-links/blob/main/javascripts/discourse/components/custom-header-links.hbs#L1

Dann können Sie hier Ihre Logik hinzufügen, um der Komponente mitzuteilen, ob sie angezeigt werden soll oder nicht:
https://github.com/discourse/discourse-custom-header-links/blob/main/javascripts/discourse/components/custom-header-links.js#L5-L7

Ich hoffe, das hilft. Lassen Sie mich wissen, wenn Sie weitere Unterstützung benötigen. :+1:

5 „Gefällt mir“