MediaWiki 扩展开发

From binaryoption
Jump to navigation Jump to search
Баннер1

MediaWiki 扩展开发

MediaWiki 是一个强大的、开源的 维基软件,驱动着包括维基百科在内的众多网站。它的核心功能可以通过 扩展 进行扩展和定制,以满足特定需求。本文旨在为初学者提供一份全面的 MediaWiki 扩展开发指南。

1. 扩展开发基础

在开始编写扩展之前,需要了解一些基础知识。

  • PHP 编程语言: MediaWiki 扩展是用 PHP 编写的。因此,对 PHP 的熟练掌握是必要的。你需要熟悉变量、数据类型、函数、类、对象以及面向对象编程的概念。
  • MediaWiki API: MediaWiki 提供了丰富的 API,用于访问和操作维基数据。了解这些 API 是开发扩展的关键。可以参考 MediaWiki API 文档
  • MediaWiki 架构: 理解 MediaWiki 的架构,包括 核心类钩子配置系统皮肤,有助于更好地开发和维护扩展。
  • 开发环境: 建议使用本地开发环境进行扩展开发。可以使用 XAMPPMAMPDocker 等工具搭建。

2. 扩展结构

一个典型的 MediaWiki 扩展包含以下文件:

  • Extension.json: 扩展的元数据文件,包含扩展名称、版本、描述、作者等信息。这是 MediaWiki 1.32 及以上版本推荐的扩展定义方式。
  • *.php 文件: 包含扩展的核心代码,例如 特殊页面标签钩子处理函数 等。
  • *.css 文件: 包含扩展的样式表,用于定制扩展的界面。
  • *.js 文件: 包含扩展的 JavaScript 代码,用于增强扩展的交互性。
  • i18n/en.json (或其他语言文件): 包含扩展的国际化文本,用于支持多种语言。
扩展文件结构示例
文件名 描述 Extension.json 扩展元数据 Special:MyExtension.php 特殊页面定义 Tag:MyExtensionTag.php 标签定义 hooks/MyExtensionHooks.php 钩子处理函数 MyExtension.css 扩展样式表 MyExtension.js 扩展 JavaScript i18n/en.json 英文国际化文件

3. 创建第一个扩展

让我们创建一个简单的扩展,用于在页面底部添加自定义文本。

1. 创建扩展目录: 在 MediaWiki 的 `extensions/` 目录下创建一个名为 `MyFirstExtension` 的目录。 2. 创建 Extension.json: 在 `MyFirstExtension` 目录下创建一个名为 `Extension.json` 的文件,内容如下:

```json {

 "name": "MyFirstExtension",
 "version": "1.0",
 "description": "A simple extension to add custom text to the page footer.",
 "author": "Your Name",
 "url": "https://example.com",
 "license": "GPL-2.0+"

} ```

3. 创建 MyFirstExtension.php: 在 `MyFirstExtension` 目录下创建一个名为 `MyFirstExtension.php` 的文件,内容如下:

```php <?php

class MyFirstExtension {

 public static function addFooterText( $out ) {

$out->addFooter('

This text was added by MyFirstExtension.

');

   return true;
 }

}

$wgHooks['OutputPage::addFooter'][] = 'MyFirstExtension::addFooterText';

?> ```

4. 启用扩展: 在 MediaWiki 的 `LocalSettings.php` 文件中,添加以下代码:

```php wfLoadExtension( 'MyFirstExtension' ); ```

5. 测试扩展: 刷新维基页面,你应该能在页面底部看到自定义文本。

4. 钩子 (Hooks)

钩子 是 MediaWiki 扩展开发中最重要的概念之一。它们允许你在 MediaWiki 的特定事件发生时执行自定义代码,而无需修改核心代码。

  • OutputPage::addFooter: 如上例所示,用于在页面底部添加内容。
  • ArticleSavePre: 在文章保存之前触发,可以用于验证或修改文章内容。
  • UserLoginComplete: 在用户登录完成后触发,可以用于执行自定义操作。
  • BeforeDisplayNoarticle: 在显示不存在的文章页面之前触发。
  • LoadExtensionSchema: 用于定义扩展所需的数据库表。

可以参考 MediaWiki 钩子列表 了解更多钩子。

5. 特殊页面 (Special Pages)

特殊页面 是 MediaWiki 提供的一种特殊的页面类型,用于执行管理任务或提供特殊功能。

  • 定义特殊页面: 使用 `SpecialPage` 类定义特殊页面。
  • 注册特殊页面: 使用 `wfSpecialPages` 数组注册特殊页面。
  • 处理特殊页面请求: 在特殊页面的 `execute()` 方法中处理用户请求。

6. 标签 (Tags)

标签 允许你插入自定义 HTML 或 PHP 代码到维基页面中。

  • 定义标签: 使用 `Tag` 类定义标签。
  • 注册标签: 使用 `wfHooks['ParserBeforeTidy']` 钩子注册标签。
  • 处理标签内容: 在标签的处理函数中解析和渲染标签内容。

7. 国际化 (Internationalization)

为了使你的扩展能够支持多种语言,需要进行国际化。

  • 使用 i18n 目录: 在扩展目录中创建一个名为 `i18n` 的目录。
  • 创建语言文件: 在 `i18n` 目录中创建语言文件,例如 `en.json`、`zh.json` 等。
  • 使用消息 ID: 在 PHP 代码中使用消息 ID 来引用国际化文本。例如:`wfMessage( 'myextension.messageid' )->text()`。
  • 使用 translatewiki.net: 可以使用 translatewiki.net 来翻译你的扩展。

8. 安全性考虑

在开发 MediaWiki 扩展时,安全性至关重要。

  • 输入验证: 始终验证用户输入,防止 SQL 注入跨站脚本攻击 (XSS) 等安全漏洞。
  • 权限控制: 确保只有授权用户才能访问敏感功能。
  • 代码审查: 进行代码审查,发现潜在的安全问题。
  • 使用 MediaWiki 安全函数: 使用 MediaWiki 提供的安全函数,例如 `htmlspecialchars()`、`wfSanitize()` 等。

9. 调试和测试

  • 启用调试模式: 在 `LocalSettings.php` 文件中设置 `$wgDebug` 为 `true`。
  • 查看错误日志: 查看 MediaWiki 的错误日志文件,查找错误信息。
  • 使用调试工具: 使用 PHP 调试工具,例如 Xdebug
  • 编写单元测试: 编写单元测试,确保扩展的功能正常。

10. 扩展发布和维护

  • 打包扩展: 将扩展文件打包成 ZIP 格式。
  • 发布到 MediaWiki 扩展目录: 可以将扩展发布到 MediaWiki 扩展目录
  • 维护扩展: 定期更新扩展,修复 bug,并添加新功能。

附加资源

---

考虑到二元期权领域的专业背景,以下链接与相关策略、技术分析和成交量分析相关,以体现专业性。虽然与 MediaWiki 扩展开发本身没有直接关系,但可以作为知识拓展:

立即开始交易

注册 IQ Option (最低存款 $10) 开设 Pocket Option 账户 (最低存款 $5)

加入我们的社区

订阅我们的 Telegram 频道 @strategybin 获取: ✓ 每日交易信号 ✓ 独家策略分析 ✓ 市场趋势警报 ✓ 新手教育资源

Баннер