Создать пользовательский компонент, который добавляет это к соответствующим сообщениям, будет проще, чем заполнять шаблон.
Если вы отредактируете код вашей темы в разделе admin > темы и компоненты… и добавите этот код во вкладку JS, то с некоторыми доработками вы получите нужный результат:
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; // первое сообщение в теме
const desiredCategories = [45, 3]; // список ID категорий, в которых должно отображаться это (через запятую)
const isInCategory = desiredCategories.includes(
this.args.post?.topic.category.id
);
return firstPost && isInCategory;
}
<template>
{{#if this.shouldShow}}
<!-- вы можете отредактировать содержимое ниже, {{this.topicId}} — место, куда будет вставлен ID темы -->
ID этой темы:
{{this.topicId}}
<!-- вы можете отредактировать содержимое выше -->
{{/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);
});
});
ID категории можно найти в её URL, чтобы настроить desiredCategories. Например, категория поддержки здесь, на Meta, имеет ID 6.
Вы можете добавить CSS-стили, чтобы оформить это так, как вам нужно, во вкладке CSS… например:
.custom-topic-id {
display: inline-block;
background: yellow;
}
