rodypl
(Rodolphe)
2021 年 10 月 5 日午前 2:36
1
フォーラムに「コンテスト投稿」というカテゴリを作成しました。このカテゴリは、当社がコンテストを実施する際の投稿用に予約されます。トピックの本文用のテンプレート作成方法はわかったのですが、トピックのタイトルを編集する方法がわかりません。以下が私の意図するところです:
現在、タイトルプロンプトには単に「an interesting title」と表示されている点にご注目ください。これを「The title of your project」に変更したいと考えています。ただし、これはフォーラム全体ではなく、その特定のカテゴリでのみ変更したいのです。その方法はどのようにすればよいでしょうか?
Johani
(Joe)
2021 年 10 月 5 日午後 4:25
2
Discourse では、作成される各カテゴリに ID が割り当てられるため、その ID を使って目的を達成できます。
テーマコンポーネント に少しカスタムコードを追加し、アクティブなテーマに適用する必要があります。
以下が、実現したい機能のためのコメント付きコードです。
<script type="text/discourse-plugin" version="0.8">
// 変更可能なオプション
const targetCategoryId = 6; // 対象とするカテゴリの ID に変更してください
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」に置き換えてください。
もう一つのオプションは非常に簡単で、そのカテゴリのタイトルに表示されるプレースホルダーのテキストを希望のものに変更するだけです。
これを見つけて、Experimental Form Templates と組み合わせて使用できることに興奮しています。タイトルを入力し忘れて、そこに何を入れるべきかわからない人もいるかもしれませんが…しかし、私にはうまくいかないようです。
これはまだ機能するかどうか、誰か知っていますか?