rodypl
(Rodolphe)
10월 5, 2021, 2:36오전
1
포럼에 "공모전 출품작"이라는 카테고리를 만들었습니다. 이 카테고리는 우리 회사가 공모전을 진행할 때 출품작을 올리는 용도로만 사용하려고 합니다. 새 주제의 본문에 사용할 주제 템플릿을 만드는 방법은 알아냈지만, 해당 주제의 제목을 수정하는 방법은 모르겠습니다. 제가 말하는 내용은 다음과 같습니다:
현재 제목 프롬프트가 "흥미로운 제목"이라고만 표시되는 것을 확인하실 수 있습니다. 이 부분을 "당신의 프로젝트 제목"으로 변경하고 싶습니다. 단, 포럼 전체가 아니라 해당 카테고리에서만 변경되도록 하고 싶습니다. 어떻게 해야 할까요?
Johani
(Joe)
10월 5, 2021, 4:25오후
2
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의 마지막 숫자)
Support - Discourse Meta
위 스니펫에서 대상 카테고리의 id(숫자)는 targetCategoryId의 "6"을 대체해야 합니다.
다른 옵션은 꽤 직관적입니다. 해당 카테고리의 제목 플레이스홀더로 표시할 텍스트로 변경하면 됩니다.
이것을 발견하게 되어 실험적 양식 템플릿 과 함께 사용해 보고 싶네요. 사람들이 제목을 입력하는 것을 잊거나, 여기에 무엇을 넣어야 할지 모를 수 있으니까요… 하지만 제 환경에서는 작동하지 않는 것 같습니다.
이 기능이 아직 작동하는지 아는 분이 계신가요?