Helperプラグインは、プラグイン開発者が他のプラグインの機能を利用することを楽にしてくれます。たとえば、Wikiページのリストを表示したい場合、「車輪の発明」を繰り返す必要はありません - Pagelist Pluginを利用できれば良いのです。どんなHelperプラグインがあるかは、現在のhelperプラグインにまとめられています。
Helperプラグインは別のプラグインから簡単な方法で利用できます。
$tag = $this->loadHelper('tag', true); if($tag) { $entries = $tag->tagRefine($entries, $refine); }
loadHelper()
は、syntaxプラグイン以外のすべてのプラグインが継承しているDokuWiki_Plugin
基底クラスのメソッドです。2つの引数をとりますが、第2引数はオプションです。第1引数は利用したいHelperプラグインの名前です。2つ目の引数は、もしhelperプラグインのロードに失敗した場合に、エラーメッセージを表示するべきかどうかを指定します。(このメッセージはローカライズされず、現在のところローカライズ自体できません。)
もし、syntaxプラグインでhelperプラグインを使いたい場合には、plugin_load()
関数を使わなければなりません。引数は、第1引数がプラグイン型で、第2引数は利用したいプラグインの名前です。さらに、plugin_isdisabled()
メソッドでそのプラグインを利用できるかどうかをチェックできます。
if(!plugin_isdisabled('tag')) { $tag =& plugin_load('helper', 'tag'); $entries = $tag->tagRefine($entries, $refine); }
Helperプラグインは helper_plugin_<プラグイン名>
というクラスで、DokuWiki_Plugin
クラスを継承します。ファイル名はhelper.php
で、プラグインのルートディレクトリに配置します。helperプラグインは次の基本メソッドを必ず実装する必要があります。
他のプラグイン型と同様、helperプラグインのgetInofo()
メソッドは作者・メールアドレス・作成日・名前・説明・URLを返します。
Helperプラグインはサポートしているメソッドの情報を返さなければなりません。getMethods()
は実装しているメソッドの情報を、それぞれのメソッドごとにメソッド名・説明・引数・返り値のkey/value配列で返します。
例
function getMethods(){ $result = array(); $result[] = array( 'name' => 'getThreads', 'desc' => 'returns pages with discussion sections, sorted by recent comments', 'params' => array( 'namespace' => 'string', 'number (optional)' => 'integer'), 'return' => array('pages' => 'array'), ); // and more supported methods... return $result; }
getMethods()
で得られるメソッドを実装したら完成です。もちろん、helperプラグイン内にはそれ以外のprivateメソッドが含まれていても構いません。習慣として、privateメソッド(getMethods()
に無いメソッド)の名前はアンダースコア(_)で始めると良いでしょう。