Más contenido relacionado La actualidad más candente (13) Más de Taisuke Yamada (20) Embed Shogiboard - my first mediawiki extension -7. MediaWiki Extension の種類
拡張タイプ できること
SpecialPage, Skin ページ全体を独自生成したり、
デザインのカスタマイズができる
Tag WikiText の <mytag>...</mytag> を
好きな HTML に置換できる
Magic words WikiText の {{#mymagic: … }} を
好きな WikiText に置換できる
Macro WikiText の {{MYVAR}} を
好きなテキストに置換できる
Hook ページ更新など MediaWiki の特定
動作タイミングに連動して関数を呼ぶ
AJAX スキン内への JS 追加とあわせて
コールハンドラ登録で AJAX をできる
今回はコレ
8. どう作る? MediaWiki Extension
$wgExtensionFunctions[] = "efHelloInit";
function efHelloInit() {
global $wgParser;
$wgParser->setHook("hello", "efHelloRender");
}
function efHelloRender($input, $args, $parser) {
$parser->disableCache();
return "<p>hello!</p>";
}
世界で一番簡単な Tag Extension 。
<hello>...</hello> を <p>hello!</p> に変換
9. $wgHoge? efHuga?
wg:(Media)Wiki Global (Variable)
ef:Extension Function
1.歴史的理由から、グローバル変数で
設定情報や主要オブジェクトにアクセス
2. MediaWiki 本体や他プラグインとの
干渉を防ぐため、名前付けルールなどが
かなり整備されている。
最上位の変数・関数は wgMyExtHoge
など、拡張名を含めるコーディング規約
11. EmbedShogiboard の中身
<kifu 再生設定 >
棋譜データ
</kifu>
<textarea id=hash>
棋譜データ
</kifu>
<iframe
src= 盤面 ?id=hash />
1.プラグインとしては iframe/textarea を
吐き出しているだけ。コメント込みで 63 行。
2. iframe 先は MediaWiki に依存しない
汎用の棋譜プレーヤにできるので潰しが効く
13. ここでお知らせ
実は明日、 MediaWiki イベント開催!
WCJ2010 Tech Talk
- MediaWiki Developers
~開催内容~
・ Hadoop による Wikipedia データの解析
・ MediaWiki の内部クラスと応用研究
・開発者コミュニティに参加するには
・ディスカッション
URL: http://atnd.org/events/9164
Hash: #wcj2010