1

我使用此处找到的指南创建了一些 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 引擎解析维基文本的其余部分。就好像点击自定义功能是在向 mediawiki 发出处理完成的信号。我正在潜入兔子洞,但希望其他人已经看到了这种行为。

4

2 回答 2

0

从未使用过 Mediawiki,但根据我的经验,这种问题表明发生了 PHP 错误,但被 @ 运算符抑制或因为 PHP 错误输出到屏幕已关闭。

我讨厌求助于这种调试方法,但是当我对 PHP 完全感到沮丧时,我会每隔几行开始放置 echo 语句(总是带有标记,所以我记得稍后将它们删除),以找出错误的确切来源. 最终,您将深入到兔子洞的底部,并准确找出有问题的代码行是什么。

于 2008-09-08T19:16:21.447 回答
0

傻我。

不得不关闭标签。

而不是<tag1>我不得不将其更改为<tag1 /><tag1></tag1>

现在一切正常!

于 2008-09-10T00:34:43.793 回答