手册:钩子/GetPreferences

From mediawiki.org
This page is a translated version of the page Manual:Hooks/GetPreferences and the translation is 100% complete.
GetPreferences
version 1.16.0 版可用
修改用户参数设置。
定义函数:
public static function onGetPreferences( User $user, array &$preferences ) { ... }
附加钩子: extension.json中:
{
	"Hooks": {
		"GetPreferences": "MediaWiki\\Extension\\MyExtension\\Hooks::onGetPreferences"
	}
}
调用自: 文件: preferences/DefaultPreferencesFactory.php
介面: GetPreferencesHook.php

更多有关附加钩子的信息,请参见Manual:Hooks
有关使用此钩子的扩展示例,请参见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,这意味着您的首选项将出现在foo选项卡上(由系统消息prefs-foo命名)的bar部分(由系统消息prefs-bar命名)。 如果不存在这样的选项卡或部分,则会自动创建。

默认标签列表

标识符 显示为
personal 用户资料
rendering 外观
editing 编辑
rc 最近更改
watchlist 监视列表
misc 其他

支持的类型

可见类型

type可以采用在文件includes/htmlform/HTMLForm.phpHTMLForm::$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中。 They are usually set via custom front-end interfaces that call the API.

Note that you should not use 'type' => 'hidden' for API preferences (that type exists for HTML forms, not preferences).

默认首选项

要设置首选项的默认值(即为尚未自定义其首选项的新用户设置的值),请将该设置添加到$wgDefaultUserOptions 全局变量。使用与钩子中的$preferences相同的键名。

或者,如果您正在编写扩展,可以将其添加到文件extension.json的DefaultUserOptions部分。