01 February 2009

MediaWiki スキンの作成

MediaWikiのスキンを作成するために、システム変数が格納されている連想配列 $this を解析してみた。
スキンのPHPファイルの末尾に、次のようなスクリプトを追加して、全ての連想配列エレメントを出力する。

<pre> <?php print_r ($this); ?> </pre>

その結果、システムメニューなどの変数がほぼ全て判明。 (そもそも、これくらいマニュアルの分かりやすいところに書いていてほしい。 私の探し方が下手糞なだけかも知れんが…)

Wikipediaでは画面の最上段に表示されているユーザメニューは

$this->data['personal_urls']['userpage'] : ユーザ名 $this->data['personal_urls']['mytalk'] : 自分の会話 $this->data['personal_urls']['preferences'] : オプション $this->data['personal_urls']['watchlist'] : ウォッチリスト $this->data['personal_urls']['mycontris'] : 自分の投稿記録 $this->data['personal_urls']['logout'] : ログアウト それぞれ、urlは ['href'] に、名称は ['text'] に格納されている。 また、リンク先が未作成の記事の場合は [class] => new がセットされている。

画面左側のシステムメニュー

$this->data['sidebar']['navigation']['0' ... 'n'] に 『メインページ』、『最近更新したページ』などが順に格納されている。 それぞれ、urlは ['href'] に、名称は ['text'] に格納されている。

画面左側のツールメニュー

$this->data['nav_urls']['whatlinkshere']['href'] : リンク元のURL $this->data['nav_urls']['recentchangeslinked']['href'] :リンク先の更新状況のURL $this->data['nav_urls']['upload']['href'] :アップロードのURL $this->data['searchaction'] :検索のURL それぞれ、名称は次の変数に格納されている $this->msg('whatlinkshere') $this->msg('recentchangeslinked') $this->msg('upload') $this->msg('search')

また、ユーザがログオンしているかどうかは、次のフラグで判定できる。

$this->data['loggedin'] が 1 の場合、ログオン済み。 NULLの場合IPユーザである。