SOY CMS / SOY Shop

ブログトップ

プラグイン開発についてその1

2008年06月04日

SOYCMSはプラグインを追加することで機能を拡張することが出来ます。

プラグインの開発について、簡単にまとめましたので記事にします。

プラグインには以下の種類があります。

-テンプレート記述プラグイン
(calendarプラグイン、パン屑プラグイン)
-イベント起動プラグイン
(カスタムフィールドプラグイン)
-その他
(テンプレート同期プラグイン)

ひとつのプラグインが複数の機能を持つこともあります。

続きを読む

 

プラグイン開発の基本

まずはベースとなる以下の機能を持つ「Hello, World!」プラグインを開発します。

HelloWorldプラグイン
管理画面を表示すると「Hello, World!」と表示される。
テンプレートに記述すると「Hello, World!」と表示される。

まずはsoycmsのインストールディレクトリの下位にある「common/plugin」ディレクトリ(以下、pluginディレクトリ)
にプラグインを配置するためのディレクトリを作成します。

ディレクトリ名に制限はありませんがプラグインを識別するためのプラグインIDと同じにすることをお勧めします。
ここでは、「helloworld」というプラグインIDで開発しますので、同一名のディレクトリを作成します。

続いて「helloworld」ディレクトリ以下に「helloworld.php」を作成します。
ファイル名はディレクトリ名と同じである必要があります。

helloworld.phpには以下のように記述します。

/**
* Hello,World! プラグイン
* -helloworld.php
*/
define("HELLO_WORLD_PLUGIN_ID","helloworld");

CMSPlugin::addPlugin(HELLO_WORLD_PLUGIN_ID,"init_hello_world");


/**
* Hello,World! プラグインの初期化
*/
function init_hello_world(){

}


define句を用いてプラグインIDを宣言していますが、これはstaticな変数やグローバル変数でも問題ありません。

ここで管理画面を見ると、おそらくこのように表示されているはずです。

cap01

名称も表示されていないため、表示することが出来ていません。init_hello_world()の内部で名称などの情報を設定します。

function init_hello_world(){
CMSPlugin::addPluginMenu(HELLO_WORLD_PLUGIN_ID,array(
"name"=>"「Hello,World!」プラグイン",
"description"=>"サンプルのプラグインです。",
"author"=>"日本情報化研究所",
"url"=>"http://www.n-i-agroinformatics.com/",
"mail"=>"soycms@soycms.net",
"version"=>"1.0"
));
}


cap02 cap03

これで管理画面に表示されるようになりました。アイコンをクリックし、詳細画面を表示することもできます。

CMSPlugin::addPluginMenu()を用いて、管理画面に情報を表示します。
第一引数はプラグインのID、第二引数は設定情報です。

「このプラグインを使用する」を選択してプラグインを有効にしても、何も表示されません。
続いて、プラグイン詳細画面を追加します。

function init_hello_world(){
.....
CMSPlugin::addPluginConfigPage(HELLO_WORLD_PLUGIN_ID,"hello_world_config");
}

/**
* Hello,World!プラグインの詳細設定画面
* @return 表示すべきHTML
*/
function hello_world_config(){

return "<p>Hello,World!</p>";

}



init_hello_world()関数の内部にCMSPlugin::addPluginConfigPage()メソッドを用いて詳細設定画面を追加します。
第一引数はプラグインID、第二引数は詳細設定画面を表示するための関数です。

hello_world_config()関数は表示するHTMLを返します。

例えば以下のようにしてHTMLを表示することもできます。

function hello_world_config(){
return file_get_contents(__FILE__."/readme.html");

/*
//PHPスクリプトを使う場合の例
ob_start();
include_once(__FILE__."/readme.php");
$html = ob_get_contents();
ob_end_clean();

return $html;
*/
}



設定項目を必要としていない多くのプラグインはHTMLを読み込んで表示しています。
管理画面はUTF-8なため、UTF-8で出力するように注意が必要です。

管理画面を見るとこのように表示されます。

cap04

これで、第一の機能である【管理画面を表示すると「Hello, World!」と表示される。】を実装することが出来ました。
お疲れ様でした。