Javascript Mediawiki:服务器端使用解析器扩展处理数据表
我正在尝试创建一个MediaWiki解析器扩展,该扩展将创建一个表,解析后的参数将在dataTables脚本的ajax URL中使用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
$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钩子?如果您只想在遇到解析器函数时添加脚本,为什么不从解析器函数处理程序方法中添加呢