MediaWiki创建页面内容模型基础

创建MediaWiki页面内容模型,开发扩展来实现,包含三个必要文件。

例:自定义名称Goat。

  • extension.json。扩展配置文件。
  • GoatContent.php。内容管理器。
  • GoatContentHandler.php。控制器。

注册扩展

"ContentHandlers": {
	"goat": "MediaWiki\\Extension\\GoatExt\\GoatContentHandler"
}

创建内容模型

"namespaces": [
	{
		"id": 555,
		"constant": "NS_GOAT",
		"name": "Goat",
		"subpages": false,
		"content": true,
		"defaultcontentmodel": "goat"
	},
	{
		"id": 556,
		"constant": "NS_GOAT_TALK",
		"name": "Goat_talk",
		"subpages": true,
		"content": false,
		"defaultcontentmodel": "wikitext"
	}
]

添加内容管理器和控制器

<?php

namespace MediaWiki\Extension\GoatExt;

class GoatContentHandler extends \ContentHandler {

	public function __construct( $modelId = 'goat' ) {
		parent::__construct( $modelId, [ CONTENT_FORMAT_TEXT ] );
	}

	public function serializeContent( \Content $content, $format = null ) {
	}

	public function unserializeContent( $blob, $format = null ) {
	}

	public function makeEmptyContent() {
		return new GoatContent();
	}

	public function supportsDirectEditing() {
		return true;
	}
}
<?php

namespace MediaWiki\Extension\GoatExt;

class GoatContent extends \AbstractContent {

	public function __construct( $modelId = 'goat' ) {
		parent::__construct( $modelId );
	}

	public function getTextForSearchIndex() {
	}

	public function getWikitextForTransclusion() {
	}

	public function getTextForSummary( $maxLength = 250 ) {
	}

	public function getNativeData() {
	}

	public function getSize() {
	}

	public function copy() {
	}

	public function isCountable( $hasLinks = null ) {
	}

	public function getName() {
		return 'Garry';
	}
}
内置模版如图:

上面代码是官方文档内容,建议复制一组出来,在其基础上修改。文档讲的很笼统,加上版本差异,实际操作起来还是需要一些功底的。

简单总结:先写配置文件,然后添加两个php模版文件,再接着开发功能。

整理了一个基础模版拓展,拿过来可以直接用。内容模型直接用的原版JSON模型(版本1.30)。在LocalSettings.php中添加后便能看到效果。

wfLoadExtension( 'Goat' );

GitHub地址:Goat Demo

参考配置文件:

{
	"name": "Goat",
	"author": [ "Pury" ],
	"type": "other",
	"requires": {
		"MediaWiki": ">= 1.30.0"
	},
	"ContentHandlers": {
		"goat": "GoatContentHandler"
	},
	"namespaces": [
		{
			"id": 467,
			"constant": "NS_GOAT",
			"name": "Goat",
			"subpages": false,
			"content": true,
			"defaultcontentmodel": "goat"
		},
		{
			"id": 468,
			"constant": "NS_GOAT_TALK",
			"name": "Goat_talk",
			"subpages": true,
			"content": false,
			"defaultcontentmodel": "wikitext"
		}
	],
	"AutoloadClasses": {
		"GoatContent": "GoatContent.php",
		"GoatContentHandler": "GoatContentHandler.php"
	},
	"manifest_version": 1
}

官方推荐示例扩展:examples,有详细注释,有些用法未必是最优解,不包含任何编辑功能,可以参考看看。

官方文档:页面内容模型

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值