我在论坛上创建了一个名为“比赛投稿”的类别。该类别将专门用于公司举办比赛时的投稿。我已经知道如何为新帖子的正文创建主题模板,但无法弄清楚如何编辑该帖子的标题。我的意思如下:
请注意,目前我的标题提示语仅显示“一个有趣的标题”。我想将其更改为“您的项目名称”。但我只希望针对该特定类别进行修改,而不是整个论坛。该如何操作?
Discourse 会为每个创建的类别分配一个 ID,因此您可以使用该 ID 来实现您的目标。
您需要在 主题组件 中添加一些自定义代码,并将其添加到您正在使用的主题中。
以下是实现您目标的带注释代码。
<script type="text/discourse-plugin" version="0.8">
// 您可以修改的选项
const targetCategoryId = 6; // 将其更改为您要 targeting 的类别 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 标签页中。
您可以通过访问特定类别的页面并检查 URL 来获取类别 ID。
例如,
此处 Meta 上的 Support 类别的 ID 是 6(URL 中的最后一位数字)
在上面的代码片段中,您目标类别的 ID(数字)应替换 targetCategoryId 中的 “6”。
另一种选择非常简单:将文本更改为您希望作为该类别标题占位符显示的内容。
我刚看到这个,很高兴能结合“实验性表单模板”(Experimental Form Templates)使用,因为人们可能会忘记输入标题,也不知道该填什么……但它似乎对我不起作用。
有人知道这个还能用吗?
这现在已合并到核心代码库中