#author("2022-06-28T11:57:30+09:00","","") [[Web Collaboration by PukiWiki]] #author("2022-06-28T11:58:55+09:00","","") //[[Web Collaboration by PukiWiki]] *chapter7 プラグインの仕組みと開発の基本 [#i740cf92] #access(); //**7-1 プラグインについて [#r751e7a0] //**7-2 自作プラグイン [#k397f3f9] //**7-3 プラグインの開発 [#i99c7922] //**7-4 プラグイン作成にあたって [#g8719660] **プラグイン作成の基本 [#t37ce155] #contents(); **プラグインスクリプトファイルの作成 [#l57f4592] 例えば、「test」という名前のプラグインを作成するならば、「test.inc.php」という名前のファイルをPukiWikiのプラグインフォルダに作成する。 ファイルは、適当な文字コード(通常はEUC)で保存する。 ***インラインプラグインの作成 [#j6ae2f5d] インラインプラグイン(「&test();」と書いて使用するもの)では、「plugin_プラグインの名前_inline」という名前の関数を作る。 testプラグインでは、「plugin_test_inline」となる。 この関数では、表示する文字列を返すようにする。例えば、「&test();」で「こんにちは」と表示されるようにするには、次のようにする。 <?php function plugin_test_inline() { return 'こんにちは'; } ?> ■プラグイン実行結果 [#d4a50ab1] &test(); ここで返す文字列はそのまま出力されるので、注意が必要(つまり、HTMLタグなども有効になる)。 そのまま出力するのが危険な場合は、htmlspecialchars関数などで変換しておく。 ***ブロックプラグインの作成 [#w37ee5a7] ブロックプラグイン(「#test()」と一行に書いて使用するもの)では、「plugin_プラグインの名前_convert」という名前の関数を作る。 testプラグインでは、「plugin_test_convert」となる。 この関数では、表示する文字列を返すようにする。例えば、「#test()」で「こんにちは」と表示されるようにするには、次のようにする。 <?php function plugin_test1_convert() { return 'こんにちは'; } ?> ■プラグイン実行結果 [#d4a50ab1] #test1(); **コマンドプラグインの作成 [#kb712c8e] コマンドプラグイン(「./?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:http://www.kisnet.or.jp/~kanou/index.php?plugin=test2]] **指定されたパラメータを取得する [#e471ff83] インラインやブロック型プラグインを呼び出す時に指定されたパラメータを取得するには、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); ***インラインプラグインの最後のパラメータについて [#v4103be4] インラインプラグインの「{}」で囲まれた最後のパラメータは、WikiテキストからHTMLに変換されている。 この最後のパラメータは、指定されていなくてもfunc_get_args関数で返される配列の最後に格納されるため、array_pop関数でこの部分を取得できる。 <?php function plugin_test_inline() { //パラメータの取得 $args = func_get_args(); //{}で指定されたパラメータを取得 $lastparam = array_pop($args); return $lastparam; } ?>