You simply need to add a
config/locales/server.zh_CN.yml
file (and similar for any other locales you want to support) with the same English tokens but with language specific values and the plugin will use that instead of falling back to the English.
2 个赞
1c7
(Cheng Zheng)
2018 年4 月 29 日 05:52
22
Thanks for helping! have a nice day!
3 个赞
I was looking how to create a site setting that validates a username, but found there’s a username type to do this. Here the list of site setting types we have today:
email
username
integer
regex
string
list
enum
Also, you can do custom validations for your plugin settings, it accepts a validator field that expects a Ruby class. You use it like this.
plugins:
my_custom_username_validation:
default: 'system'
validator: 'UsernameSettingValidator'
You can check the UsernameSettingValidator class to see the interface of validators.
Cheers!
10 个赞
Dev_Work
(Aleksandr)
2019 年12 月 18 日 07:52
24
not working (
<a id="forgot-password-link" class="forgot-password" href="{{Discourse.SiteSettings.myplugin_link_forgot_password}}" target="_blank">Forgot password?</a>
settings.yml
plugins:
myplugin_enabled:
default: true
client: true
myplugin_link_forgot_password:
default: ''
client: true
upd:
working!!!
href="{{unbound siteSettings.myplugin_link_forgot_password}}"
Dev_Work
(Aleksandr)
2019 年12 月 28 日 12:20
25
how to display text html ?
not working {{unbound siteSettings.forum_text_for_admin}}
upd:
working in *.hbs {{{unbound siteSettings.forum_text_for_admin}}}
Again you need to use a Computed Property and format as safe html. This is EmberJS not vanilla JavaScript. You can’t put ‘code’ directly into templates. Read the ember guides.
1 个赞
Dev_Work
(Aleksandr)
2019 年12 月 28 日 12:36
27
already working with EmberJS
bitmage
(Brandon Mason)
2025 年2 月 28 日 16:22
33
我的 settings.yml 文件中有以下内容:
plugins:
county_fence_enabled:
default: false
client: true
county_fence_latrine_category:
default: -1
client: true
这显示在我的 /admin/plugins 页面上:
我不明白为什么没有“设置”按钮?
我认为你应该写插件名称 county_fence 而不是 plugins。
2 个赞
bitmage
(Brandon Mason)
2025 年3 月 4 日 00:40
35
我也尝试过,但没有区别。
这份文档 (以及 OP)使用了 plugins 键。在其他地方,我看到过像你所说的使用插件名称。
1 个赞
@bitmage 其实,我可能知道原因。
你在 plugin.rb 中写了 # name: County Fence 吗?
如果是,名字必须与你的目录名相同。
插件的名称可以通过本地化覆盖:
假设你的设置格式是:
county_fence:
county_fence_enabled: true
...
在 client.en.yml 中:
en:
admin_js:
admin:
site_settings:
categories:
county_fence: "County Fence"
bitmage
(Brandon Mason)
2025 年3 月 4 日 03:21
37
将默认值设置为 0 而不是 -1 会导致其显示出来。
有什么方法可以知道某个类型没有被正确检测到吗?
YamlLoader 加载文件。
SiteSettingExtension 调用 setting() ,参数由 YamlLoader 生成
…然后调用 defaults.load_setting ,稍后调用 type_supervisor.load_setting
即使 type_supervisor.load_setting 没有直接传递值,它也可以访问默认值,因为这些默认值在通过 DefaultsProvider 初始化 TypeSupervisor 时被传递进来了。
type_supervisor.load_setting 然后调用 get_data_type,后者调用 parse_value_type() ,如果类型无法检测到,它应该会引发 ArgumentError。
我认为整个序列是由 SiteSetting 模型中的 load_settings 调用的,并且我在堆栈的任何地方都看不到异常处理。但我没有在服务器日志或任何其他地方看到任何错误输出。
似乎应该有一些用户反馈或错误日志来说明某个设置解析失败了。
如果我理解正确的话,您的意思是将 -1 用作设置的默认值会导致“设置”按钮不显示。您每次都能重现此行为吗?
这很奇怪。我看不到您的设置有什么问题,我不确定解析失败是如何发生的。
bitmage
(Brandon Mason)
2025 年3 月 4 日 04:40
39
现在它正常工作了,我可以将其改回 -1,它仍然可以正常运行。
我删除了数据库,重新初始化了,仍然无法重现它。
1 个赞
bitmage
(Brandon Mason)
2025 年3 月 6 日 16:40
40
我已将插件部署到我的实时站点,默认设置为 0 以确保安全。设置按钮显示:
但当我点击它时,没有显示任何设置:
在继续排查此问题之前,我将禁用该插件。
bitmage
(Brandon Mason)
2025 年3 月 6 日 20:26
42
好的,我认为在开发和生产环境中都是因为插件目录中的文件夹与 county-fence 不匹配。这就是为什么设置没有显示,并且可能还会导致其他问题。
谢谢大家!
1 个赞
Robert:
那不正确。根据 OP,它应该是 plugins。
我还不清楚。我安装的大多数插件都不使用 plugins:,包括官方和最近的插件(还有骨架模板 )
我以为那部分用于设置过滤,但可能我错了。
1 个赞
哦,有意思!那抱歉了。
我要说的是,Apparently,这并不是必需的。
我已经数不清我用 plugins: 编写了多少插件了。
1 个赞
bitmage
(Brandon Mason)
2025 年3 月 15 日 18:42
45
为了扩展文档:
Site Settings 类型的完整列表可在 type_supervisor.rb 代码 中找到。在其正上方,您还可以看到 Site Setting 接受的有效子键。
一个使用更多这些选项的高级示例可以在 discourse-welcome-link 主题组件 中找到。这些相同的值也应该可以在插件中使用,但文件将位于 config/settings.yml。
3 个赞