手册:钩子/GetPreferences

From MediaWiki.org
Jump to navigation Jump to search
This page is a translated version of the page Manual:Hooks/GetPreferences and the translation is 45% complete.

Other languages:
English • ‎español • ‎français • ‎polski • ‎português do Brasil • ‎中文 • ‎日本語
GetPreferences
version 1.16.0 版可用
修改用户参数设置。
定义函数:
public static function onGetPreferences( User $user, array &$preferences ) { ... }
附加钩子:

In extension.json:

{
	"Hooks": {
		"GetPreferences": "MyExtensionHooks::onGetPreferences"
	}
}

For MediaWiki ≤1.25:

$wgHooks['GetPreferences'][] = 'MyExtensionHooks::onGetPreferences';
调用自:文件: preferences/DefaultPreferencesFactory.php

更多有关附加钩子的信息,请参见手册:钩子
有关使用此钩子的扩展示例,请参见Category:GetPreferences extensions/zh

用法

参数

参数/选项 描述
$user User whose preferences are being modified
&$preferences Preferences description array, to be fed to an HTMLForm object


例子

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)
		];
	}
}


Tabs and sections

The section array key specifies which tab and section of Preferences contains your preferences. If your section value is foo/bar, this means your preference will appear on the foo tab (named by system message prefs-foo) within the bar section (named by system message prefs-bar). If no such tab or section exists, it is created automatically.

默认标签列表

Identifier Displays as
personal 用户资料
rendering 显示
editing 编辑
rc 最近更改
watchlist 监视列表
misc 其他

支持的类型

Visible types

The type can take on various values found in the HTMLForm::$typeMappings array in the file includes/htmlform/HTMLForm.php, including info, multiselect, radio, etc.

Most preferences are stored in the same format as is used by the HTMLFormField, but in the case of 'type' => 'usersmultiselect' a transformation should be carried out from a newline-separated list of usernames (which is what the form widget works with) and a newline-separated list of user IDs (which is what gets stored in the database). See the treatment of email-blacklist (in core) or echo-notifications-blacklist (in Echo) for examples of this.

API参数设置

API preferences use type 'api'. They are not displayed in Special:Preferences.

Default preferences

To set the default value for a preference (i.e. the value that is set for a new user that hasn't customized their preferences yet), add the setting to the $wgDefaultUserOptions global variable. Use the same key name as you use for $preferences in the hook.

Alternatively, if you're writing an extension, you can add to the DefaultUserOptions section of the file extensions.json.