自定义新主题按钮文本

:discourse2: 摘要 为每个类别或标签自定义新主题按钮
:eyeglasses: 预览 在 Discourse 主题创建器上预览
:hammer_and_wrench: 代码库
https://github.com/discourse/discourse-customize-new-topic-button-text
:question: 安装指南 如何安装主题或主题组件
:open_book: 初次使用 Discourse 主题? Discourse 主题使用入门指南

安装此主题组件

功能

此主题组件允许您自定义类别或标签主题列表上的“新主题”按钮,以及撰写器中的操作名称和按钮(如下所示)。例如,如果您有一个 Bug 类别,您可以将这些文本更新为“报告 Bug”:

(某些图标可能需要添加到您的 svg icon subset 管理员设置中)

您还可以自定义回复按钮文本,这将替换撰写器和主题内的 reply 文本:

设置

名称 描述
custom new topic text 在这里输入每个自定义按钮的详细信息
inherit parent category 禁用时,子类别将不会自动继承父类别文本

有两个设置,主要的是 custom new topic text

此设置允许您设置过滤器(标签或类别名称)、“新主题”按钮的图标(这不会更改撰写器中的图标),以及撰写器顶部的操作名称和撰写器的“创建主题”按钮。

还有一个默认启用的附加设置,名为 inherit parent category。启用此设置后,所有子类别也将更改其文本(除非在设置中另有指定)。

:information_source: 请注意,如果您设置了标签,它将覆盖所选的类别。

:bulb: 未来增强的构想

  • 本地化文本以支持不同语言
  • 支持类别和标签组合,以及多个标签

:discourse2: 由我们托管? 标准、商务和企业计划均可使用主题组件。

27 个赞

太好了,非常感谢 :heart:

今天,我使用 api.customizeComposerText() 做了一个更简单的版本 :sweat_smile:

这是一个好得多的解决方案。谢谢你,@awesomerobot

在我的实验中,我从未能够使用 discourse-post-voting 插件覆盖分类的 Composer 按钮标签。当多个分类启用了帖子投票时,这会成为一个更大的问题。

如果我可以建议的话;启用对覆盖 discourse-post-voting 标签的支持,将是一个很好的增强。 ( :

1 个赞

这是一个很棒的主题组件!有一个可以将其提升一个层次的想法:

如果你要重命名按钮,因为你实际上想改变帖子的类型,那么你应该在整个类别中更改命名。

例如:
你有一个名为“Events”的类别。你实际上会将整个类别中的“topic”一词更改为“events”。它不是“New Topic”,而是“New Event”,而不是“Topics”列表,你将有一个“Events”列表,等等。

你在其他工具中也看到了这一点,当你改变某物的首要用例时。以下是 AirTable 在创建新表时所做的。默认情况下,表包含“records”。

但是,假设我想创建一个名为“Users”的表,那么我可以将每个记录称为 Users:

像这样对待主题组件将使我们能够轻松有效地将类别重新品牌化为更具体的实体。例如:支持请求、活动等。

我在搜索时找到了这个主题组件,因为我想将“Topic”一词更改为“Events”:

3 个赞

@awesomerobot 这个主题组件太棒了,非常感谢!

我注意到这个主题组件似乎导致了“新建主题”按钮的 CSS 出现一些奇怪的行为。

禁用主题组件:

启用主题组件:


我还注意到,虽然它改变了撰写器中的“创建主题”按钮,这很棒……

它还将“回复”按钮的文本更改为相同的字符串,这不太理想,因为它不是在创建另一个 bug 报告,而是在回复 :slight_smile:

是否有可能在编辑器中添加另一个字段来更改“回复”按钮的文本(或者留空以保持为“回复”?

4 个赞

抱歉,还有最后一件事:这似乎也不尊重两个子类别(每个子类别都有不同的父类别)具有相同 slug 的情况。例如:

  • parent1
    • sub1
  • parent2
    • sub1

在这种情况下,我无法让主题组件区分这两个子类别,它们都共享编辑器中的相同配置。

3 个赞

感谢您的反馈,我已进行了一些更新!FIX: action, switch category to ID, ignore replies by awesomerobot · Pull Request #5 · discourse/discourse-customize-new-topic-button-text · GitHub

我完全忽略了回复按钮!目前我只是将其保留为 reply,但单独设置来更改其文本是有意义的。

说得好,似乎使用类别 ID 而不是设置中的类别名称是避免这种情况的最佳方法。这意味着您现有的任何设置都需要更新。

3 个赞

似乎有一个新的 bug。启用此插件后,它会创建两个主题按钮:

2 个赞

是的,感谢您的报告,Discourse 中的一些连接器已更改 — 如果您更新,现在应该已修复:

2 个赞

是否可以修复按钮大小差异?(旧屏幕截图,您最新的更新已修复双按钮问题)

1 个赞

是的,这个按钮现在应该有正确的高度了

1 个赞
嗯,尝试使用此组件不成功,并在我的日志中看到很多类似这样的警告。

消息 (报告了 4 份副本)

[DiscourseJsProcessor] 弃用:使用 {{attrs}} 引用命名参数已被弃用。{{attrs.canCreateTopic}} 应更新为 {{@canCreateTopic}}。(“discourse/components/custom-new-topic-button.hbs” @ L2:C8) [deprecation id: attrs-arg-access] 有关更多详细信息,请参阅 Ember.js - Deprecations
at theme-transpiler.js:3164:26752
at j.computed (theme-transpiler.js:3168:1693)
at j.computed (theme-transpiler.js:3168:161)
at j.computed (theme-transpiler.js:3168:1693)
at D (theme-transpiler.js:3168:1754)
at te (theme-transpiler.js:3168:1318)
at PathExpression (theme-transpiler.js:3198:21763)
at yo (theme-transpiler.js:3187:2776)
at Al (theme-transpiler.js:3187:3513)
at Ml (theme-transpiler.js:3187:3309)
at yo (theme-transpiler.js:3187:3013)
at Al (theme-transpiler.js:3187:3513)
at Ml (theme-transpiler.js:3187:3309)
at yo (theme-transpiler.js:3187:3013)
at Ml (theme-transpiler.js:3187:3350)
at yo (theme-transpiler.js:3187:3013)
at Al (theme-transpiler.js:3187:3513)
at Ml (theme-transpiler.js:3187:3309)
at yo (theme-transpiler.js:3187:3013)
at Bi (theme-transpiler.js:3187:3879)
at PA (theme-transpiler.js:3190:3002)
at Cf (theme-transpiler.js:3190:9856)
at Al (theme-transpiler.js:3176:35353)
at gf (theme-transpiler.js:3176:35600)
at D (theme-transpiler.js:3198:42250)
at Sft.o.precompile (theme-transpiler.js:3281:3078)
at dDe (theme-transpiler.js:3161:1003)
at e.CallExpression (theme-transpiler.js:3159:33796)
at h (theme-transpiler.js:10:111797)
at e.uPe [as _call] (theme-transpiler.js:59:16906)
at e.oPe [as call] (theme-transpiler.js:59:16726)
at e.lPe [as visit] (theme-transpiler.js:59:17700)
at t.visitQueue (theme-transpiler.js:59:40645)
at t.visitSingle (theme-tr…

回溯

/var/www/discourse/lib/discourse_js_processor.rb:133:in block in create_new_context' mini_racer-0.8.0/lib/mini_racer.rb:273:in block in attach’
mini_racer-0.8.0/lib/mini_racer.rb:242:in call_unsafe' mini_racer-0.8.0/lib/mini_racer.rb:242:in block (2 levels) in call’
mini_racer-0.8.0/lib/mini_racer.rb:369:in timeout' mini_racer-0.8.0/lib/mini_racer.rb:241:in block in call’
mini_racer-0.8.0/lib/mini_racer.rb:240:in synchronize' mini_racer-0.8.0/lib/mini_racer.rb:240:in call’
/var/www/discourse/lib/discourse_js_processor.rb:168:in block in v8_call' /var/www/discourse/lib/discourse_js_processor.rb:167:in synchronize’

1 个赞

嗯,奇怪,我在最新的 Discourse 上测试过,一切运行正常——我刚刚合并了组件的更新,这将解决该弃用问题,你能更新后重试吗?

1 个赞

我也是,试了好几次都没显示出来。

不幸的是,这个很棒的主题组件似乎无法与 Custom Wizard Plugin 🧙 很好地协同工作。

Wizard 插件可以通过类别设置挂钩到类别按钮:

当使用您的组件时,按钮的名称会更改,但按下它不再会启动在类别设置中选择的 Wizard。我们很乐意在大型生产网站上使用您的组件,但目前无法使用。希望这个问题能得到解决。别有压力 :slight_smile:

我没有看到这个问题,我的设置和你一样,我的按钮也能正常工作。你可能需要检查一下其他的插件或主题组件。顺便说一句,我使用的是最新的构建版本。

1 个赞

这是一个很棒的小组件,可以为网站增添一些精美的细节润色。

1 个赞

你好

我认为我遇到了一个错误。

“新主题”按钮的文本无法再修改。
修改对其他按钮有效。

版本:3.2.0.beta4-dev([4886c1fddc]

感谢您的帮助(以及这些功能!)

2 个赞

感谢您的报告!

看起来这是最新 PR 的一个回归:

它从 this.args.<param>. 语法转换为 @<param> 语法;但是,前者是必需的,因为我们在插件出口内。

编辑:我提交了一个 PR :+1:

1 个赞

感谢您的PR @Arkshine!这将在更新中得到修复

此次更新还将包含:FEATURE: add ability to customize "Reply" text by 3-w-c · Pull Request #7 · discourse/discourse-customize-new-topic-button-text · GitHub

因此,现在还将包含在撰写器和帖子中自定义回复按钮文本的选项(仍然基于标签和类别)。

1 个赞