Javascript Mediawiki:服务器端使用解析器扩展处理数据表

Javascript Mediawiki:服务器端使用解析器扩展处理数据表,javascript,php,datatables,mediawiki,Javascript,Php,Datatables,Mediawiki,我正在尝试创建一个MediaWiki解析器扩展,该扩展将创建一个表,解析后的参数将在dataTables脚本的ajax URL中使用 $wgHooks['ParserFirstCallInit'][]='AllQuesttableFunction'; $WGTextensionMessageFiles['AllQuestTable']=\uuuuu DIR\uuuuuu.'/_questtable.i18n.php'; 函数AllQuesttableFunction(&$parser){ $pa

我正在尝试创建一个MediaWiki解析器扩展,该扩展将创建一个表,解析后的参数将在dataTables脚本的ajax URL中使用

$wgHooks['ParserFirstCallInit'][]='AllQuesttableFunction';
$WGTextensionMessageFiles['AllQuestTable']=\uuuuu DIR\uuuuuu.'/_questtable.i18n.php';
函数AllQuesttableFunction(&$parser){
$parser->setFunctionHook('questtable','AllQuestTableParserFunction');
返回true;
}
函数AllQuestTableParserFunction(&$parser,$arg1='',$arg2='',$arg3=''){
$tableend='
AreaQuest NameMin
LevelRewards'; 返回数组($tableend,'noparse'=>true,'isHTML'=>true); } $wgHooks['ParserBeforeTidy'][]=“wgAddJquery”; 函数wgAddJquery(&$parser,&$text){ 全局$addJqueryScripts,$wgLang; $code=$wgLang->getCode(); if($addJqueryScripts===true)返回true; $parser->mOutput->addHeadItem( ' $(文档).ready(函数(){ var dataTable=$(“#服务器表”)。dataTable({ “columnDefs”:[ { 目标:0, 类名:\'al\' }, { 目标:1, 类名:\'al\', 键入:“num html” }, { 目标:2, 类名:\'ar\' }, { 目标:3, 类名:\'al\' }, {目标:\'no-sorting\',可排序:false} ], “处理”:对, “语言”:{ “处理”:” }, “服务器端”:正确, “订单”:[[2,“说明”], “ajax”:{ url:“http://mywiki.com/wiki/extensions/quest_tables/_questtables_ajax.php?lowerlevel=“.$arg1.&higherlevel=”.$arg2.&race=”.$arg3.&lang=en”, 类型:“post”, } } ); } ); ' ); $addJqueryScripts=true; 返回true; }
我使用了这里提供的代码

用于将脚本添加到标头,但 首先,它将它添加到每一页中,我只希望它出现在有神奇文字的页面上。 第二,它似乎将wgAddJquery方式推到AllQuestTableParserFunction之前,这意味着我不能在dataTables脚本中使用已解析的参数

tl;博士 有一个带有{{{magicword:arg1}arg2}arg3}的页面。所有3个参数都被解析为一个扩展,其中一个函数创建一个表,第二个函数将这3个参数作为ajax url的一部分并仅在该页面上添加一个脚本到标题中。我不需要其他地方的脚本


有什么建议或者这是不可能的吗?

您可能应该使用
$parser->getOutput()->addModules(…)
,但这不是重点吗

为什么需要ParserBeforeTidy钩子?如果您只想在遇到解析器函数时添加脚本,为什么不从解析器函数处理程序方法中添加呢