chapter7 プラグインの仕組みと開発の基本

#access();

プラグイン作成の基本

プラグインn役割

多くのプラグインを使用することで、pukiwikiを文書作成ツールとして使う以上、様々なようとで使うことができるようになったり、
より手軽に表現できたり、より便利な使い方が可能になります。

pukiwikiには、標準配布パッケージに80個ほどのプラグインが収録されています。
プラグインには書式としてページ内に記述して活用できるものと、pukiwiki内部のコマンドとして使用できるものがあります。
そのため80個のプラグインすべてを、ユーザーが直接意識的に使用するわけではありません。
多数のプラグインがどのような動きをするのかを知っておくと、こうしたいんだけと何とかならないかな...、というときに役に立つことでしょう。

プラグインスクリプトファイルの作成

例えば、「test」という名前のプラグインを作成するならば、「test.inc.php」という名前のファイルをPukiWikiのプラグインフォルダに作成する。
ファイルは、適当な文字コード(通常はEUC)で保存する。

インラインプラグインの作成

インラインプラグイン(「&test();」と書いて使用するもの)では、「plugin_プラグインの名前_inline」という名前の関数を作る。
testプラグインでは、「plugin_test_inline」となる。

この関数では、表示する文字列を返すようにする。例えば、「&test();」で「こんにちは」と表示されるようにするには、次のようにする。

<?php
function plugin_test_inline()
{
    return 'こんにちは';
}
?>

■プラグイン実行結果 [#d4a50ab1]
&test();

ここで返す文字列はそのまま出力されるので、注意が必要(つまり、HTMLタグなども有効になる)。
そのまま出力するのが危険な場合は、htmlspecialchars関数などで変換しておく。

ブロックプラグインの作成

ブロックプラグイン(「#test()」と一行に書いて使用するもの)では、「plugin_プラグインの名前_convert」という名前の関数を作る。
testプラグインでは、「plugin_test_convert」となる。

この関数では、表示する文字列を返すようにする。例えば、「#test()」で「こんにちは」と表示されるようにするには、次のようにする。

<?php
function plugin_test1_convert()
{
    return 'こんにちは';
}
?>

■プラグイン実行結果 [#d4a50ab1]

#test1();

コマンドプラグインの作成

コマンドプラグイン(「./?plugin=test」のようなURLを呼び出して使用するもの)では、「plugin_プラグインの名前_action」という名前の関数を作る。
testプラグインでは、「plugin_test_action」となる。

この関数では、ページのタイトルとページの内容が格納された配列を返す。ページのタイトルは「msg」、内容は「body」というキー名で格納する。
例えば、「./?plugin=test」でタイトルが「テスト」で、内容が「こんにちは」と表示されるようにするには、次のようにする。

<?php
function plugin_test_action()
{
    return array('msg'=>'テスト', 'body'=>'こんにちは');
}
?>

■プラグイン実行結果 [#d4a50ab1]
http://www.kisnet.or.jp/~kanou/index.php?plugin=test2

指定されたパラメータを取得する

インラインやブロック型プラグインを呼び出す時に指定されたパラメータを取得するには、plugin_test_inlineやplugin_test_convert関数でfunc_get_args関数を呼び出す。

<?php
function plugin_test3_convert()
{
    //パラメータの数の確認
    if (func_num_args() < 1)
        return 'パラメータの数が不正です。';
    //パラメータの取得
    $args = func_get_args();
 
    //はじめのパラメータを表示
    return htmlspecialchars($args[0]);
}
?>

■プラグイン実行結果 [#d4a50ab1]

#test3(1);

#test3(0);

インラインプラグインの最後のパラメータについて

インラインプラグインの「{}」で囲まれた最後のパラメータは、WikiテキストからHTMLに変換されている。
この最後のパラメータは、指定されていなくてもfunc_get_args関数で返される配列の最後に格納されるため、array_pop関数でこの部分を取得できる。

<?php
function plugin_test_inline()
{
    //パラメータの取得
    $args = func_get_args();
    //{}で指定されたパラメータを取得
    $lastparam = array_pop($args);
 
    return $lastparam;
}
?>

トップ   一覧 検索 最終更新   ヘルプ   最終更新のRSS