Extension:Gadgets
- Extension:Gadgets
Gadgets 是一个 MediaWiki 扩展,允许用户自定义他们的维基体验,而无需修改核心维基软件或共享的 CSS/JavaScript 文件。它通过提供一个界面,让用户可以选择启用或禁用特定的脚本和样式,这些脚本和样式由维基管理员或经验丰富的用户提供。 本文将深入探讨 Gadgets 扩展的功能、配置、使用方法以及安全注意事项,专为初学者设计。
Gadgets 扩展的作用
在默认情况下,MediaWiki 允许用户在他们的用户页面上添加自定义 CSS 和 JavaScript 代码,以改变维基的外观和行为。然而,这存在一些问题:
- 维护困难: 用户自定义代码可能冲突,导致不可预测的行为。
- 安全风险: 恶意代码可能会被注入。
- 可重复使用性差: 相同的自定义代码需要被复制到每个用户的页面上。
Gadgets 扩展解决了这些问题,它提供了一个更结构化、更安全、更易于维护的自定义方式。它允许管理员或经验丰富的用户创建“小工具”,这些小工具是预先编写好的 JavaScript 和 CSS 代码片段,用户可以选择启用或禁用它们。
Gadgets 的核心概念
- 小工具 (Gadget): 一个包含 JavaScript 和/或 CSS 代码的独立模块,用于修改维基的外观或行为。
- 小工具定义 (Gadget Definition): 描述小工具的元数据,包括名称、描述、默认状态、依赖关系等等。这些定义存储在 MediaWiki 的特殊页面中。
- 小工具消息 (Gadget Message): 提供不同语言环境下的小工具描述。
- 用户偏好设置 (User Preferences): 用户可以访问他们的偏好设置,选择启用或禁用他们想要使用的小工具。
- 特殊页面 (Special Page): Gadgets 扩展创建了一些特殊的页面,用于管理小工具,例如 Special:Gadgets 和 Special:GadgetDefinition。
安装和配置 Gadgets 扩展
Gadgets 扩展通常已经包含在标准的 MediaWiki 安装包中。如果你的维基没有启用它,你需要手动启用它。
1. 编辑 LocalSettings.php 文件: 找到你的 MediaWiki 安装目录下的 `LocalSettings.php` 文件,用文本编辑器打开它。 2. 添加以下代码: 在文件中添加以下行:
```php wfLoadExtension( 'Gadgets' ); ```
3. 保存文件: 保存 `LocalSettings.php` 文件。 4. 刷新维基: 刷新你的维基页面,以确保扩展已成功加载。
启用扩展后,你需要配置它。配置主要涉及定义哪些用户组可以创建和管理小工具。这通过修改 `$wgGroupPermissions` 数组来实现。例如,要允许管理员和 Gadget 定义者组创建小工具,你可以添加以下代码到 `LocalSettings.php`:
```php $wgGroupPermissions['sysop']['gadgets-edit'] = true; $wgGroupPermissions['gadget-definition']['gadgets-edit'] = true; ```
- 系统管理员* 可以使用这些权限来添加和修改小工具。
创建小工具
创建小工具涉及编写 JavaScript 和/或 CSS 代码,并创建一个小工具定义。
1. 编写代码: 编写你想实现的功能的 JavaScript 和/或 CSS 代码。例如,你可以编写一个脚本来自动添加引用模板,或者编写一个 CSS 样式来改变维基页面的颜色。 2. 创建小工具页面: 创建一个新的维基页面,命名格式为 `MediaWiki:Gadget-<小工具名称>.js` (JavaScript) 或 `MediaWiki:Gadget-<小工具名称>.css` (CSS)。 例如,创建一个名为“AutoRef”的小工具的 JavaScript 文件,你应该创建一个名为 `MediaWiki:Gadget-AutoRef.js` 的页面。 3. 粘贴代码: 将你编写的代码粘贴到小工具页面中。 4. 创建小工具定义页面: 创建一个新的维基页面,命名格式为 `MediaWiki:Gadget-<小工具名称>`. 例如,创建一个名为“AutoRef”的小工具的定义页面,你应该创建一个名为 `MediaWiki:Gadget-AutoRef` 的页面。 5. 添加小工具定义: 在小工具定义页面中,添加以下内容:
```wiki <define> name = AutoRef description = Automatically adds a reference template. default = false category = Editing dependencies = [] </define> ```
* name: 小工具的名称,用户将在他们的偏好设置中看到这个名称。 * description: 小工具的描述,向用户解释它的功能。 * default: 指定小工具是否默认启用 (true) 或禁用 (false)。 * category: 将小工具分类到不同的类别中,以便用户更容易找到它。 * dependencies: 列出小工具依赖的其他小工具。
6. 添加小工具消息: 创建对应的消息定义页面,例如 `MediaWiki:Gadget-AutoRef/zh` (简体中文) 或 `MediaWiki:Gadget-AutoRef/en` (英文) 来提供不同语言的描述。 示例:`MediaWiki:Gadget-AutoRef/zh` 内容为:自动添加参考文献模板。
用户如何启用和禁用小工具
用户可以在他们的用户偏好设置中启用或禁用小工具。
1. 访问偏好设置: 点击维基页面右上角的用户名,然后选择“偏好设置”。 2. 选择“小工具”选项卡: 在偏好设置页面中,点击“小工具”选项卡。 3. 选择小工具: 在“小工具”页面上,你将看到所有可用的小工具列表。 勾选你想要启用的小工具的复选框。 4. 保存更改: 点击“保存”按钮,以保存你的更改。 5. 刷新维基: 刷新你的维基页面,以应用你的更改。
Gadgets 扩展的安全注意事项
Gadgets 扩展可以提供强大的自定义功能,但也存在一些安全风险。
- 代码审查: 在允许用户启用小工具之前,管理员应该仔细审查所有小工具代码,以确保它们不包含恶意代码。
- 权限控制: 限制只有可信的用户才能创建和管理小工具。
- 定期更新: 定期更新 MediaWiki 软件和 Gadgets 扩展,以修复已知的安全漏洞。
- 内容安全策略 (CSP): 配置维基的 CSP,以限制可以加载的脚本和样式来源。
- JavaScript 安全: 避免使用 `eval()` 函数,因为它可能会执行恶意代码。
高级用法
- 依赖关系管理: 可以使用 `dependencies` 属性来指定小工具之间的依赖关系。 这可以确保小工具以正确的顺序加载。
- 条件加载: 可以使用 JavaScript 代码来根据特定的条件加载小工具。 例如,你可以编写一个脚本来仅在特定的页面上加载小工具。
- API 集成: 可以使用 MediaWiki API 来自动化小工具的创建和管理。
- 使用 Module:Gadget: 利用模块来组织和复用小工具代码,提升可维护性。
故障排除
- 小工具不起作用: 确保小工具已正确定义,并且已在你的偏好设置中启用。 检查浏览器控制台是否有错误信息。
- 小工具冲突: 如果多个小工具试图修改相同的元素,可能会发生冲突。 尝试禁用一些小工具,以确定哪个小工具导致了冲突。
- 小工具加载缓慢: 如果小工具包含大量的代码,可能会导致页面加载缓慢。 优化小工具代码,以提高性能。
总结
Gadgets 扩展是一个强大的工具,可以增强维基用户的自定义体验。通过理解 Gadgets 的核心概念、正确配置扩展、编写安全可靠的小工具,并注意安全注意事项,你可以为你的维基用户提供一个更灵活、更个性化的维基环境。 掌握 *技术支持* 资源,及时解决问题,并积极参与 *社区* 讨论,可以帮助你更好地利用 Gadgets 扩展。 了解 *MediaWiki 文档* 可以提供更深入的技术细节。
相关链接
- Help:Gadgets
- Manual:Gadgets
- Special:Gadgets
- Special:GadgetDefinition
- MediaWiki:Gadget-example
- Help:Editing pages
- Help:User preferences
- Extension:BetaFeatures
- Extension:CentralAuth
- Extension:Semantic MediaWiki
- Extension:VisualEditor
- Template:Ambox
- Help:Table
- Help:Links
- Wikipedia:Policies and guidelines
- Candlestick pattern
- Moving average
- Relative Strength Index
- Bollinger Bands
- Fibonacci retracement
- Volume weighted average price
立即开始交易
注册 IQ Option (最低存款 $10) 开设 Pocket Option 账户 (最低存款 $5)
加入我们的社区
订阅我们的 Telegram 频道 @strategybin 获取: ✓ 每日交易信号 ✓ 独家策略分析 ✓ 市场趋势警报 ✓ 新手教育资源