- 1 名前:nobodyさん [2007/07/04(水) 07:24:10 ID:77E6ADvG]
- MediaWiki について情報交換するスレです
== 公式サイト等 == [www.mediawiki.org/wiki/MediaWiki/ja MediaWiki.org] [www.mwusers.com/ MediaWiki Forums] [www.amazon.co.jp/dp/1904811590/ Mediawiki Administrators' Tutorial Guide] 日本語翻訳中(らしい)
- 375 名前:nobodyさん mailto:sage [2007/12/24(月) 19:28:14 ID:???]
- 345です。
その節はお世話になりました。 依然としてmediawikiをcmsツールとして利用できないかと 色々TRYしています。 先日は、ページ毎にSkinを変更する手段としてLocalSettings.php にif文を記載して分岐しましたが、これだとページを作成する度に LocalSettings.phpに手を加えなくてはなりません。 これを回避するために、ページにSkin名が含まれている場合 当該Skinで表示するということをやろうと思い、次のように コーティングしましたが上手く行きません。 イベントハンドラをフックに割り当て、フックのイベント が発生したタイミングでchangeSkinが実行されることを予定してい ます。 changeSkinでは$wgOut->getHTML()で得たHTML文にSkin名(例ではnostalgia) が記載されている場合は$wgDefaultSkin = 'nostalgia';となるように しています。 フックのイベントのタイミングが既にSkinが選択された後であれば 当然上手く行かないでしょうし、また、$wgOutにHTML文が割り当てられて いない時も上手く行かないと思います。コメント部分で色々と フックのイベントタイミングを選びましたが、なかなか上手く行きません。 どのようにコーティングすれば当初の目的が果たせるでしょうか。 よろしくお願いします。 なお、書き込みエラーになったのでコードは次に書き込みます。
- 376 名前:nobodyさん mailto:sage [2007/12/24(月) 19:31:37 ID:???]
- <?php
//$wgHooks['OutputPageBeforeHTML'][] = 'changeSkin'; //$wgHooks['ArticleAfterFetchContent'][] = 'changeSkin'; //$wgHooks['ParserBeforeTidy'][] = 'changeSkin'; //$wgHooks['ParserBeforeStrip'][] = 'changeSkin'; //$wgHooks['OutputPageParserOutput'][] = 'changeSkin'; //$wgHooks['ArticleFromTitle'][] = 'changeSkin'; $wgHooks['ArticleFromTitle'][] = 'changeSkin'; function changeSkin() { global $wgDefaultSkin,$wgOut; if(strpos($wgOut->getHTML(),"nostalgia")!== false) { $wgDefaultSkin = 'nostalgia'; } return true; } ?>
|

|