
扩展手册
Jump to navigation
Jump to search
扩展允许您定制MediaWiki的外观和工作方式。
虽然许多扩展由MediaWiki的开发者维护,但其他由第三方开发者编写。 这样会导致一个结果,会出现bug,他们不能保证能够和其他扩展相互兼容。 一些扩展不被维护;并不是所有的扩展都能在所有的MediaWiki版本運作。 使用任何扩展,特别是那些标记着不稳定的扩展,当你使用时会有所风险。 當你使用需要修補核心軟體的擴展時,確認有備份資料庫。 這是避免導致維基出錯的意外。
扩展的类型
解析器标签
解析器标签扩展了内置的wiki标记,具有其他功能,无论是简单的字符串处理还是完整的信息检索。
解析器函数
解析器函数是特殊的wiki标记语法,可以与页面中的其他wiki元素“交互”,并提供特定的输出。
钩子
挂钩允许在发生某些已定义事件(例如保存页面或登录用户)时执行自定义代码。
特殊页面
特殊页面是由软件根据需要创建以执行特定功能的页面。
皮肤
皮肤允许用户自定义MediaWiki的外观。
魔术字
魔术字是一种将各种wiki文本字符串映射到与函数关联的单个ID的技术。
API
MediaWiki提供了一个动作API,一种允许访问一些wiki功能的Web服务,如身份验证,页面操作和搜索。
认证
MediaWiki提供SessionManager和AuthManager两个与身份验证相关的框架,通过自定义身份验证机制增强安全性。
浏览扩展插件
您可浏览分类:按分类排列的扩展 以了解已有插件的功能范围。 关于如何安装这些插件或者如何编写自己的插件,参见后续章节。
检查已安装的扩展
只有那些具备访问服务器文件系统的管理员可以安装用于MediaWiki的扩展插件,但是任何人都可以点击Special:Version页面获得当前有哪些扩展插件被用在这个MediaWiki网站上的信息。 例如,点击这里可以了解哪些扩展插件被用在了英文维基百科。
安装扩展插件
在安装完MediaWiki后即可安装扩展插件。 添加一个插件需要下面几个步骤:
- 在您开始之前
- 少数扩展插件需要安装补丁。其中大多数提供了专为unix安装命令而设计的使用说明。 这需要命令行权限(SSH)来运行这些在扩展插件帮助页面上给出的命令。
- 下载您的扩展。
- Extension Distributor可帮你选择和下载最受欢迎的扩展插件。
- 扩展插件通常以模块的程序包形式发布。 它们通常位于
$IP /extensions/
的子目录中。 在维基媒体Git存储库存储的扩展列表位于git:mediawiki/extensions。 一些不使用版本控制的扩展都不推荐使用。 - bundles、composer 或包存储库中也提供了一些扩展。
- 安装您的扩展。.
- 在
LocalSettings.php
文件的结尾添加下列代码: wfLoadExtension( 'ExtensionName' );
- 这一条将强制PHP解释器来读取文件扩展,从而使其到MediaWiki访问。
- 某些扩展可能与维护脚本冲突,例如它們能直接访问$_SERVER(不推荐)。
- 在这种情况下,他们可以被包裹在条件下进行运行,以让维护脚本仍然可以运行。
- 在
if ( !$wgCommandLineMode ) {
wfLoadExtension ( 'ExtensionName' );
}
- 对于任何需要自定义命名空间的扩展,维护脚本importDump.php 将失败,这些命名空间在上面的条件中被“包含”,例如Extension:Semantic MediaWiki ,扩展:页面表单 。
- 确保为扩展设置了所需的权限!
- 虽然此安装过程对于大多数扩展来说已足够,但某些扩展需要不同的安装过程。 检查您的扩展文档以获取详情。
- 如果要在LocalSettings.php中更改配置变量,则必须在包含扩展名的之后执行此操作。 否则,分机中定义的默认值将覆盖您的设置。
升级扩展
当你升级你的MediaWiki时,部分扩展插件也需要升级,而其他部分扩展插件则可能支持向上兼容。 升级某个扩展插件到新版本:
- 下载新版本扩展插件
- 替换extension/ExtensionName目录下所有文件为新版本的文件。 不要删除LocalSettings.php中存在的扩展插件的配置。
- 如果扩展需要修改MediaWiki資料庫,你將需要运行Update.php维护脚本。 多数扩展插件会提及是否需要运行这个脚本。 (在执行脚本之前执行数据备份)。 如果你没有使用命令行的权限,你也可以使用网络更新。
這手冊包含超過99%的拓展。 如果該拓展有與你不同的標準,請跟隨該標準。
卸载一个扩展
从LocalSettings.php中删除带有扩展名的行以将其卸载:
wfLoadExtension( 'ExtensionName' );
- 您必须删除与扩展配置有关的所有行。
- 如果扩展需要任何数据库更改,则必须运行update.php 才能删除它们。