Mediawiki自定义标记停止页面解析

时间:2020-03-05 18:49:24  来源:igfitidea点击:

我使用此处找到的指南创建了一些mediawiki自定义标签

http://www.mediawiki.org/wiki/Manual:Tag_extensions

我将在下面发布我的代码,但是问题出在它击中页面中的第一个自定义标签之后,它会调用它并打印响应,但是在Wikitext中却没有得到它之后的任何内容。似乎它只是停止解析页面。

有任何想法吗?

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引擎解析其余Wikitext。好像击中自定义功能是在向MediaWiki发出信号,表明处理已完成。我正在潜入兔子洞,但希望其他人已经看到了这种行为。

解决方案

回答

从未使用Mediawiki,但根据我的经验,这种问题表明发生了php错误,但已使用@运算符抑制了该错误,或者​​者由于关闭了输出到屏幕的php错误而被抑制了。

我讨厌诉诸于这种调试方法,但是当在php中完全受挫时,我将开始每隔几行开始放置echo语句(总是带有标记,所以我记得以后再删除它们),以准确找出错误的出处。最终,我们将到达"兔子洞"的底部,并准确找出问题代码行是什么。

回答

傻我

必须关闭标签。

我不得不将其改为<tag1>或者<tag1> </ tag1>,而不是<tag1>

现在一切正常!