手册:钩子/GetPreferences
GetPreferences | |
---|---|
自version 1.16.0 版可用 修改用户参数设置。 | |
定义函数: | public static function onGetPreferences( User $user, array &$preferences ) { ... }
|
附加钩子: | 在extension.json中:
{
"Hooks": {
"GetPreferences": "MyExtensionHooks::onGetPreferences"
}
}
|
调用自: | 文件: preferences/DefaultPreferencesFactory.php |
Interface: | GetPreferencesHook.php |
更多有关附加钩子的信息,请参见手册:钩子 。
有关使用此钩子的扩展示例,请参见Category:GetPreferences extensions/zh。
用法
参数
参数/选项 | 描述 |
---|---|
$user | 正在修改其首选项的用户 |
&$preferences | 要提供给HTMLForm对象的首选项描述数组 |
例子
In extension.json
:
"Hooks": {
"GetPreferences": [ "MediaWiki\\Extension\\ExampleExtension\\Hooks::onGetPreferences" ]
}
In includes/Hooks.php
:
namespace MediaWiki\Extension\ExampleExtension;
class Hooks {
/**
* @param User $user
* @param array $preferences
*/
public static function onGetPreferences( $user, &$preferences ) {
// A checkbox
$preferences['mypref'] = [
'type' => 'toggle',
'label-message' => 'tog-mypref', // a system message
'section' => 'personal/info',
];
// A set of radio buttons. Notice that in the 'options' array,
// the keys are the text (not system messages), and the values are the HTML values.
// They keys/values might be the opposite of what you expect. PHP's array_flip()
// can be helpful here.
$preferences['mypref2'] = [
'type' => 'radio',
'label-message' => 'tog-mypref2', // a system message
'section' => 'personal/info',
// Array of options. Key = text to display. Value = HTML <option> value.
'options' => [
'Pick me please' => 'choice1',
'No, pick me!' => 'choice2',
'Seriously, pick me right now' => 'choice3',
],
'default' => 'choice1', // A 'default' key is required!
'help-message' => 'tog-help-mypref2', // a system message (optional)
];
}
}
选项卡和节
section
数组键指定Preferences的哪个选项卡和部分包含您的首选项。
如果您的section
值是foo/bar,这意味着您的首选项将出现在bar部分(由系统消息$pref-bar命名)的foo选项卡上(由系统消息prefs-foo
命名)。
如果不存在这样的选项卡或部分,则会自动创建。
默认标签列表
标识符 | 显示为 |
---|---|
personal | 用户资料 |
rendering | 外观 |
editing | 编辑 |
rc | 最近更改 |
watchlist | 监视列表 |
misc | 其他 |
支持的类型
可见类型
type可以采用在文件includes/htmlform/HTMLForm.php的HTMLForm::$typeMappings
数组中找到的各种值,包括信息
、多选
、单选
等。
大多数首选项以与HTMLFormField相同的格式存储,但在'type' => 'usersmultiselect'
的情况下,应该从换行符分隔的用户名列表(表单小部件使用该列表)和换行符分隔的用户ID列表(存储在数据库中)执行转换。
有关这方面的例子,请参阅email-blacklist
(核心)或echo-notifications-blacklist
(Echo )的处理。
Floats
For float
types, you can set min
and max
, which will be validated on save.
API参数设置
API首选项使用类型‘API’。它们不会显示在Special:Preferences中。
默认首选项
要设置首选项的默认值(即为尚未自定义其首选项的新用户设置的值),请将该设置添加到$wgDefaultUserOptions 全局变量。使用与钩子中的$preferences相同的键名。
或者,如果您正在编写扩展,可以将其添加到文件extension.json的DefaultUserOptions部分。