1

ここにあるガイドを使用して、いくつかの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エンジンが残りのwikitextを解析するだけです。カスタム関数を押すかのように、処理が完了したことをmediawikiに通知します。私はうさぎの穴に飛び込む過程にありますが、他の誰かがこの行動を見たことを望んでいました。

4

2 に答える 2

0

愚かな私。

タグを閉じる必要がありました。

代わりに、または<tag1>に変更する必要がありました<tag1 /><tag1></tag1>

これですべてが機能します!

于 2008-09-10T00:34:43.793 に答える
0

Mediawiki を使用したことはありませんが、私の経験では、このような問題は PHP エラーが発生したことを示していますが、@ 演算子によって、または画面への PHP エラー出力がオフになっているために抑制されました。

私はこのデバッグ方法に頼るのが嫌いですが、PHP に絶対的かつ完全に不満を感じているときは、エラーの原因を正確に把握するために、数行ごとに echo ステートメントを配置し始めます (常にマーカーを使用するため、後で削除することを忘れないでください)。 . 最終的には、うさぎの穴の底にたどり着き、問題のあるコード行が何であるかを正確に突き止めます。

于 2008-09-08T19:16:21.447 に答える