题
我使用此处找到的指南创建了一些 mediawiki 自定义标签
http://www.mediawiki.org/wiki/Manual:Tag_extensions
我将在下面发布我的代码,但问题是在它命中页面中的第一个自定义标记后,它调用它并打印响应,但在维基文本中没有得到任何其后的内容。看起来它只是停止解析页面。
有任何想法吗?
if ( defined( 'MW_SUPPORTS_PARSERFIRSTCALLINIT' ) ) {
$wgHooks['ParserFirstCallInit'][] = 'tagregister';
} else { // Otherwise do things the old fashioned way
$wgExtensionFunctions[] = 'tagregister';
}
function tagregister(){
global $wgParser;
$wgParser->setHook('tag1','tag1func');
$wgParser->setHook('tag2','tag2func');
return true;
}
function tag1func($input,$params)
{
return "It called me";
}
function tag2func($input,$params)
{
return "It called me -- 2";
}
更新:@George Mauer——我也看到了这一点,但这并没有阻止页面渲染,只是 Mediawiki 引擎解析维基文本的其余部分。就好像点击自定义功能是在向 mediawiki 发出处理已完成的信号。我正在潜入兔子洞,但希望其他人看到了这种行为。
解决方案
从未使用过 Mediawiki,但根据我的经验,此类问题表明发生了 PHP 错误,但被 @ 运算符抑制或因为 PHP 错误输出到屏幕被关闭。
我讨厌诉诸这种调试方法,但是当我对 PHP 感到彻底沮丧时,我会开始每隔几行放置 echo 语句(总是带有一个标记,所以我记得稍后删除它们),以准确找出错误的来源。最终,您将深入到兔子洞的底部并找出有问题的代码行到底是什么。
其他提示
愚蠢的我。
不得不关闭标签。
代替<tag1>
我不得不把它改成 <tag1 />
或者 <tag1></tag1>
现在一切正常了!
不隶属于 StackOverflow