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ユーザである。