我使用此处找到的指南创建了一些 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>

现在一切正常了!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top