MediaWikiにはタイトルを使ってページにリダイレクトするAPIはありますか?MediaWikiのwikiページにリダイレクト
私は、ページにリダイレクトするMediaWiki拡張機能を用意しています。それを行う方法を教えてもらえますか?
MediaWikiにはタイトルを使ってページにリダイレクトするAPIはありますか?MediaWikiのwikiページにリダイレクト
私は、ページにリダイレクトするMediaWiki拡張機能を用意しています。それを行う方法を教えてもらえますか?
のMediaWikiからHTTP redirectを発行する推奨方法は、(いずれかのインスタンスあなたが渡された、またはグローバルインスタンス$wgOut
のいずれか)OutputPageインスタンス上redirect()
メソッドを呼び出すことです。このメソッドは、パラメータとしてURLとオプションでHTTPステータスコード(デフォルトは302)を取ります。
(また、単に直接PHP header()
関数を呼び出しますが、OutputPageメソッドを使用した場合も、特殊なHTTPヘッダーを設定することもでき、他のコードに干渉しにくくなる可能性があります。)
は何を持っていることである場合Titleオブジェクトの場合は、getFullURL()
を呼び出して対応するURLを取得できます。あなただけのページの名前を持っている場合は、Title::newFromText()
に渡し(または適切なタイトルクラス内の他のstaticファクトリメソッドの1つ)このようなことのためにタイトルオブジェクトを取得するには、:
$title = Title::newFromText($pageName);
if ($title) {
global $wgOut;
$wgOut->redirect($title->getFullURL());
}
else {
// we've got a bogus page name, deal with it somehow
}
redirect()
を呼び出すとになりません。は要求を中止するか、すぐに応答コードを送信します。— output()
メソッドが呼び出されたときに、OutputPageに適切なHTTPヘッダーが送信されるようにする内部フラグを設定します。あなたの拡張でどのフックを使用しているかによって、戻り値(および/または任意のフック固有のフラグ)を設定して、ページの実際のコンテンツをレンダリングする必要がないことをMediaWikiに伝えることができます。
ps。上記の例では、廃止予定の$wgOut
グローバル変数を使用してOutputPageインスタンスを取得していますが、現代のMediaWikiコードでは、現在のRequestContextから取得する必要があります。多くのMediaWikiクラスは、SpecialPage、Skin、Title、WebRequest、そしてOutputPage自体を含むIContextSourceインターフェイスを実装しているので、それらのいずれかからRequestContextを取得できます。 (すでにがOutputPageオブジェクトを持っている場合はもちろん、あなただけそれを直接使用する必要があります。)
を限り、あなたは残していないとしてあなたのwikiは、このページの
#REDIRECT [[foo]]
、代わりを使用して、ページfooが表示されます。