MediaWiki修改默认内容模型
2021-01-30
通过钩子ContentHandlerDefaultModelFor实现。
public static function onContentHandlerDefaultModelFor( Title $title, &$model ) { ... }
- $title 用于判断选择内容模型。
- &$model 模型引用,string类型。一般是全局常量,或者自定义模型名称。
define( 'CONTENT_MODEL_WIKITEXT', 'wikitext' );
define( 'CONTENT_MODEL_JAVASCRIPT', 'javascript' );
define( 'CONTENT_MODEL_CSS', 'css' );
define( 'CONTENT_MODEL_TEXT', 'text' );
define( 'CONTENT_MODEL_JSON', 'json' );
实现钩子只需两步。
extension.json中配置
{
"Hooks": {
"ContentHandlerDefaultModelFor": "GoatHooks::onContentHandlerDefaultModelFor"
}
}
编写钩子
Title.php类有许多方法,依据具体需求编写判断条件。
例如:新建页面默认使用自定义钩子goat。
$title->exists()判断是页面否存在。
<?php
class GoatHooks {
public static function onContentHandlerDefaultModelFor( $title, &$model ) {
if (!$title->exists()) {
$model = 'goat';
}
}
}
GitHub地址:Goat Demo