[管理者通知] テーマ「_Base」には、更新が必要なコードが含まれています。(ID:discourse.script-tag-discourse-plugin) (詳細はこちら)
私のフォーラムの1つでは、JSスクリプトを新しいJSカスタマイズタブに移動するだけで、このメッセージを削除しました。
もう一方のフォーラムでは、それほど簡単にはいきません。
これは、タグを受け入れるカテゴリでのみコンポーザーのタグフィールドを表示する、古いオーバーライドです。
<script type="text/discourse-plugin" version="1.4.0">
// show tag chooser in the composer only when necessary
const discourseComputed = require("discourse-common/utils/decorators").default;
const EmberObject = require("@ember/object").default;
function toggleTagChooser(display = "hide") {
if (display == "show") {
document.getElementsByClassName("mini-tag-chooser")[0].style.display = "block";
document.getElementsByClassName("reply-area")[0].classList.add("with-tags");
return;
}
// Verify the existence of the tag choser
let tagChoser = document.getElementsByClassName("mini-tag-chooser");
if(tagChoser.length > 0) {
tagChoser[0].style.display = "none";
document.getElementsByClassName("reply-area")[0].classList.remove("with-tags");
}
return;
}
api.modifyClass('controller:composer', {
pluginId: "toggleTagChoser",
@discourseComputed("model.category", "model.tags", "lastValidatedAt")
tagValidation(category, tags, lastValidatedAt) {
// custom code to toggle the tag choser
toggleTagChooser("hide");
if(category != null) {
if (
category.allow_global_tags == true ||
category.allowed_tag_groups.length > 0 ||
category.allowed_tags.length > 0
) {
toggleTagChooser("show");
}
}
// end of the custom code
const tagsArray = tags || [];
if (this.site.can_tag_topics && !this.currentUser.staff && category) {
// category.minimumRequiredTags incorporates both minimum_required_tags, and required_tag_groups
if (category.minimumRequiredTags > tagsArray.length) {
return EmberObject.create({
failed: true,
reason: I18n.t("composer.error.tags_missing", {
count: category.minimumRequiredTags,
}),
lastShownAt: lastValidatedAt,
});
}
}
}
});
</script>
このスクリプトは、metaで投稿された類似の(そして古い、2019年以前の)変更に基づいていましたが、元の投稿は見つけられません。
とにかく、質問は2つあります。
-
これをJSタブに正しく移動するにはどうすればよいですか?可能ですか、それともテーマコンポーネントを作成する必要がありますか?
-
特定のカテゴリでのみコンポーザーのタグセレクターを非表示/表示する、よりエレガントな方法はありますか?私のフォーラムでは、タグは1つのカテゴリ(
#searchと#offerタグ付きの広告カテゴリ)にのみ使用しています。