Extensions FAQ/ja
From MediaWiki.org
[edit] 拡張機能を有効にするには?
拡張機能のPHPファイルをextensionsフォルダにコピーしてrequire_once( "extensions/FILENAME" );宣言をLocalSettings.phpに追加します。FILENAMEは Extension.phpといった拡張機能のファイル名です。
Manual:Extensions/ja#拡張機能をインストールするも参照して下さい。
[edit] どのように独自の拡張機能を書けばいいのでしょうか?
Manual:Extensions/ja#拡張機能を書くをご覧下さい。
[edit] 拡張機能を使用してページキャッシングを無効にするには?
PurgePageは下記でリスト表示されているステップを実行するためにも使用されます。 MediaWiki1.3から1.5で動作します。
MediaWiki 1.3のためには次のコードを拡張機能に含めます:
global $wgOut; $wgOut->enableClientCache(false);
MediaWiki 1.4では次のコードを使用します(必ずしもすべてのケースで動作しません):
global $wgTitle; $dbw =& wfGetDB( DB_MASTER ); $dbw->update( 'cur', array( 'cur_touched' => $dbw->timestamp( time() + 120 ) ), array( 'cur_namespace' => $wgTitle->getNamespace(), 'cur_title' => $wgTitle->getDBkey() ), 'nameOfYourExtension' );
ノート: 上記のコードはすべての場合では動作しません。同じロジックであるが次のような異なるコードを使用すればはるかにベターに動作します。
$ts = mktime(); $now = gmdate("YmdHis", $ts + 120); $ns = $wgTitle->getNamespace(); $ti = wfStrencode($wgTitle->getDBkey()); $sql = "UPDATE cur SET cur_touched='$now' WHERE cur_namespace=$ns AND cur_title='$ti'"; wfQuery($sql, DB_WRITE, "");
MediaWiki1.4では、次のコードも動作します(上記のメソッドよりもおそらくベターです):
global $wgTitle; wfPurgeSquidServers(array($wgTitle->getInternalURL())); $wgTitle->invalidateCache();
MediaWiki 1.5beta5では、もっと信頼性のあるインターフェイスが導入されました。パーサフック関数はparserオブジェクトを3番目の引数、参照として取得することがあります。次のコードを使用して下さい:
function wfSomeHookFunction( $text, $params, &$parser ) { $parser->disableCache(); ... }
ノート: MediaWiki 1.5.8では上記のコードは動作しません。ここで適切なコードを見ることが出来ます。拡張機能の2番目の関数に次のコードを使用しなければなりませんでした("setHook"関数ではなく):
global $wgTitle; $dbw =& wfGetDB( DB_MASTER ); $dbw->update( 'page', array( 'page_touched' => $dbw->timestamp( time() + 120 ) ), array( 'page_namespace' => $wgTitle->getNamespace(), 'page_title' => $wgTitle->getDBkey() ), 'name of your Extension as defined in $wgExtensionFunctions[] =' ); }
警告: 1.6から1.7の初期のバージョンにおいて、編集が投稿されたときにページがキャッシュされることを防止するのは拡張機能では不可能です。これは期待された振る舞いではありません。bugzilla:5683をご覧下さい。この問題を解決する方法がたくさんあります:
- DisableCache hackをインストールする。これはもっともエレガントな解決方法ですが十分にテストされていません。
- 編集を投稿した後でaction=purgeを動作させる。これはもっとも安全な選択ですが、大規模wikiでは実現できないかもしれません。
- サイト全体のキャッシングを無効にする。サーバが実行しなければならない作業量を激しく増やします。すべてのキャッシングを無効にするためには、LocalSeetings.phpに次のコードを追記して下さい:
# クライアントサイドのキャッシング: /** クライアントサイドのページのキャッシングを可能にする */ $wgCachePages = false; /** * 先行するキャッシュされたページを無効にするために現在の時間を設定します * クライアントとサーバサイドの両方のキャッシングに影響します。 * コマンドを使用してサーバ上で現在の日付を取得することが出来ます: * date +%Y%m%d%H%M%S */ $wgCacheEpoch = 'date +%Y%m%d%H%M%S';
[edit] 最近のバージョン
MediaWiki 1.7.0移行では次のコードで間に合います:
$parser->disableCache();
$parserはパーサフック拡張機能に三番目の引数として渡される親パーサへの参照です。
[edit] 拡張機能でwikiテキストをレンダーするには?
[edit] 特別ページ
キャッシュを解析しない出力をレンダリングするとき、例えば、特別ページなどでは$textは解析されるwikiテキストです。
global $wgOut; $wgOut->parse( $text );
[edit] パーサフック
Manual:Tag extensions/ja#拡張機能でwikitextを表示するには?をご覧下さい
[edit] 拡張機能の出力(ダイナミックな内容)で検索を有効にするには?
出来ません。ダイナミックな内容は静的なインデックスに含め留ことは出来ません。
[edit] 拡張機能のHTML出力の修正を避けるには?
Manual:Tag extensions/ja#拡張機能のHTML出力の修正を避ける方法は?をご覧下さい
[edit] XMLスタイルのパラメータを拡張機能に渡すには?
Manual:Tag extensions/ja#XMLスタイルのパラメータを拡張機能タグに渡すには?をご覧下さい
[edit] 拡張機能とテンプレート
Manual:Tag extensions/ja#拡張機能とテンプレートをご覧下さい
[edit] "NaodW..." or "UNIQ..."
MediaWikiの以前のバージョンにおいてテンプレートと拡張機能に関する他の問題はテンプレートの出力において"NaodW..."もしくは"UNIQ..."が表示されることでした。MediaWiki 1.5(.1)はそのような出力をするPHPバージョンに関する問題を持っています。MediaWiki 1.5.2移行にアップグレードすべきです。
[edit] 記事を保護するかどうかを拡張機能で決定するには?
TitleクラスとisProtected( )メソッドを使用します。例です
function extensionFunction() { # $titleはtitleオブジェクトであることを想定します if( $title->isProtected( 'edit' ) ) { # 編集から保護されます } else { # 編集から保護されません } }
[edit] 拡張機能フォルダに適用するパーミッションは?
/wiki構造においてすべてのスクリプトはPHPが動作するようなユーザによって読み込みと実行可能である必要があります。すべてのパーミッションは通常755でユーザはオーナー/グループです。LocalSettings.phpファイルはセットアップ上で作成され残りを設定する例になります。
[edit] Special:Versionで拡張機能が表示されるようにするには?
Manual:Extensions/ja#MediaWikiで機能を登録するをご覧下さい