Topic ID als Variable?

Es wird einfacher sein, eine benutzerdefinierte Komponente zu erstellen, die dies an die richtigen Beiträge anhängt, anstatt eine Vorlage auszufüllen.

Wenn Sie den Code Ihres Themes unter admin > themes & components bearbeiten… und dies zum JS-Tab hinzufügen, sollten Sie mit einigen Anpassungen das gewünschte Ergebnis erzielen:

import { apiInitializer } from "discourse/lib/api";
import Component from "@glimmer/component";

class TopicIdentifier extends Component {
  get topicId() {
    return this.args.post?.topic?.id;
  }

  get shouldShow() {
    const firstPost = this.args.post?.post_number === 1; // erster Beitrag im Thema
    const desiredCategories = [45, 3]; // eine durch Kommas getrennte Liste von Kategorie-IDs, in denen dies angezeigt werden soll
    const isInCategory = desiredCategories.includes(
      this.args.post?.topic.category.id
    );

    return firstPost && isInCategory;
  }

  <template>
    {{#if this.shouldShow}}
      <!-- Sie können den Inhalt unten bearbeiten, {{this.topicId}} ist, wo die Thema-ID eingefügt wird -->
      Diese Thema-ID ist
      {{this.topicId}}
      <!-- Sie können den Inhalt oben bearbeiten -->
    {{/if}}
  </template>
}

export default apiInitializer((api) => {
  api.decorateCookedElement((element, helper) => {
    const wrapper = document.createElement("div");
    wrapper.className = "custom-topic-id"

    helper?.renderGlimmer(
      wrapper,
      <template><TopicIdentifier @post={{helper.model}} /></template>
    );

    element.appendChild(wrapper);
  });
});

Sie können die Kategorie-ID aus ihrer URL finden, um desiredCategories zu konfigurieren. Zum Beispiel hat die Support-Kategorie hier auf Meta die ID 6.

Sie können CSS hinzufügen, um dies nach Belieben zu gestalten, mit dem CSS-Tab… zum Beispiel

.custom-topic-id {
  display: inline-block;
  background: yellow;
}

3 „Gefällt mir“