Discourse는 생성된 각 카테고리에 id를 부여하므로, 이를 활용하여 목표를 달성할 수 있습니다.
테마 컴포넌트에 커스텀 코드를 조금 추가하고, 이를 활성 테마에 추가해야 합니다.
원하는 결과를 얻기 위한 주석이 달린 코드는 다음과 같습니다.
<script type="text/discourse-plugin" version="0.8">
// 수정할 수 있는 옵션
const targetCategoryId = 6; // 대상 카테고리로 변경
const placeHolderForCategory = "CHANGE_THIS_TEXT_BUT_KEEP_THE_QUOTES";
// 이 줄 아래는 변경할 필요가 없습니다. 관리자인 경우 여기서 멈추세요.
const discourseComputed = require("discourse-common/utils/decorators")
.default;
// 원격 컴포넌트가 아님
const currentLocale = I18n.currentLocale();
I18n.translations[
currentLocale
].js.composer.custom_category_placeholder = placeHolderForCategory;
// 대상 카테고리의 플레이스홀더를 변경하고, 그렇지 않으면 기본값으로
// 되돌립니다.
api.modifyClass("model:composer", {
@discourseComputed("canEditTopicFeaturedLink")
titlePlaceholder() {
return this.category && this.category.id === targetCategoryId
? "composer.custom_category_placeholder"
: this._super();
},
});
</script>
이 코드는 컴포넌트의 common > header 탭에 넣어야 합니다.
카테고리 id는 해당 특정 카테고리의 페이지를 방문하여 URL을 확인함으로써 얻을 수 있습니다.
예를 들어,
여기 Meta의 Support 카테고리의 id는 6입니다(여기 URL의 마지막 숫자)
위 스니펫에서 대상 카테고리의 id(숫자)는 targetCategoryId의 "6"을 대체해야 합니다.
다른 옵션은 꽤 직관적입니다. 해당 카테고리의 제목 플레이스홀더로 표시할 텍스트로 변경하면 됩니다.