如何在MediaWiki模板中添加自定义标签以供我的扩展程序处理?

时间:2012-11-14 11:33:02

标签: php mediawiki mediawiki-api

我想添加3个自定义标签,MediaWiki管理员将添加到她的模板中(例如登录页面的Userlogin.php模板),这些扩展需要由我正在构建的扩展程序处理。标签的格式为<mytag_forXaction><mytag_forYaction>。当扩展程序解析时,它们将被有效的HTML标记替换为显示框或图像或任何所需目的。

到目前为止,我已经尝试过这样做了:

if ( !defined( 'MEDIAWIKI' ) ) {
    die( 'This file is a MediaWiki extension, it is not a valid entry point' );
}

$wgExtensionCredits['parserhook'][] = array(
   'path' => __FILE__,
   'name' => 'Test Parser Function',
   'description' => 'A simple example parser function extension',
   'version' => 0.1,
   'author' => 'Me',
   'url' => 'https://www.mediawiki.org/wiki/Manual:Parser_functions',
);

$wgHooks['ParserFirstCallInit'][] = 'buttonParserSetup';
function buttonParserSetup( ) {
    global $wgParser;

    //apploginbtn will be the tag to be replaced
    $wgParser->setHook( 'apploginbtn', 'RenderAppLoginButton' );

    return true; // Return true so that MediaWiki continues to load extensions.
}

// Render the output of the parser function.
function RenderAppLoginButton( $input, $argv ) {
    $output = "SUCCESSFULLY REPLACED.";
    return $output;
}

现在,我将标记&lt; apploginbtn /&gt;,或&lt; apploginbtn&gt;&lt; / apploginbtn&gt;,或{{apploginbtn}}或{{#apploginbtn}}添加到Userlogin.php文件中期望的位置,标签不会被替换。

任何帮助实现预期结果都会有很大帮助,因为自从2-3天以来我一直坚持这样做,文档根本没用。

另外,我使用的是MediaWiki 1.9.3,因为这是我需要开始支持的最低版本。

1 个答案:

答案 0 :(得分:3)

使用UserLoginForm hook。它使用UserLogin templateat SVN)调用您的扩展函数,该函数用于创建登录表单。它是QuickTemplate的一个实例,您可以从扩展程序代码中编辑/填充它。

如果您没有定位已解析的wiki文本,请不要尝试构建解析器扩展(标记扩展名)。