プラグイン開発について
baserCMS は、独自のプラグイン管理機能を持ち、プラグインのインストール、有効化、無効化の仕組み、また、本体での処理をフックするプラグインフック機能を提供しています。
基本的には、CakePHP のプラグイン開発に準じますが、baserCMS の管理機能に認識させる為、baserCMS独自のルールを組み込む必要があります。
ここでは、baserCMS の管理できるようにするためのプラグイン開発ルールをご説明します。
CakePHP のプラグイン開発に準じてプラグインを開発する
前述したとおり、baserCMS は基本的に CakePHP の開発手法に準じて開発されていますので、プラグインについても CakePHP の開発に準ずる必要があります。 CakePHP のプラグイン開発については次のリンク先を参考にしてください。
コントローラーは PluginsController を継承させる
コントローラーでは、baserCMS にパッケージされている PluginsController を継承させます。
class DemoController extends PluginsController{
var $name = 'Demo'; // nameプロパティをちゃんと定義しておく【重要】
}
PluginsController は 事前に読み込んでおく必要あります。
App::import('Controller', 'Plugins');
モデルでは plugin プロパティを定義する
プラグインで利用するモデルでは、プラグイン名を設定する plugin プロパティを設定します。
class Demo extends AppModel {
var $plugin = 'Demo';
}
本体の機能を拡張する
baserCMSのプラグインは、本体に新しいコンテンツとしての機能を追加する以外に、本体の既にある機能の拡張を行ったり、振る舞いや表示内容を変えるという事も可能です。
本体機能の拡張を行うには、プラグインフックという仕組みを利用します。
この仕組みによって、「ページ機能の入力項目を増やす」というような事も可能となります。
インストール用のスキーマファイルと初期データファイルを準備する
データベースを利用するプラグインの場合は、テーブル定義用のスキーマファイルを用意します。また、初期データを登録する場合は、CSVファイルで作成します。
スキーマファイルの作成と設置
スキーマファイルの作成は「スキーマファイル生成ツール」を利用する事で簡単に行う事ができます。
※ スキーマファイルとは、コアフレームワークであるCakePHPで利用できる形式のデータベーステーブルの定義ファイルです。
1.データベースに任意のテーブルを作成する
テーブル名は、インストール時に設定したプレフィックスと、純粋なテーブル名の間にプラグイン用のプレフィックス「pg_」を付加します。
(例)インストール時のプレフィックスが「bc_」で、純粋なテーブル名が、「pens」の場合 bc_pg_pens
※ v1.6.7 より、CSV、SQLiteはインストール時のプレフィックスはありません。
テーブルには基本的に次のフィールドを含めてください。
- id・・・プライマリーキー用(CSVで利用する場合、プライマリーキーは自動的にidとなります)
- created・・・レコード作成日(自動更新されます)
- modified・・・レコード更新日(自動更新されます)
2.管理画面にログインし、スキーマファイル生成画面を開く
次のURLにアクセスすると、テーブルの一覧が表示されます。
http://{baserCMS設置URL}/admin/tools/write_schema
3.生成する対象のテーブルを選択し、「生成」ボタンをクリックする
schema.zipとしてダウンロードする事ができますので、ダウンロードしたファイルを解凍し、生成されたスキーマファイルを確認します。
{プレフィックスなしのテーブル名}.php というファイルが出来ていればスキーマファイルの生成は完了です。
4.生成されたスキーマファイルを設置する
インストール時に実行するスキーマファイルは以下のパスに設置します。
/app/plugins/{プラグイン名}/config/sql/{プレフィックスなしのテーブル名}.php
初期データファイルの作成と設置
1.CSVファイルを作成する
初期データファイルはCSVファイルで作成します。CSVファイルは次の仕様とします。
- 文字コードは、Shift-JIS
- 各フィールドをカンマで区切る
- 各フィールドをダブルコーテーション(")で囲む
- フィールド内のダブルコーテーションは、ダブルコーテーションでエスケープする
- 1行目は、フィールド名の定義とする
(例) "id", "name","title","created","modified" "1","test","簡単な""プラグイン""の作り方","",""
2.作成したCSVファイルを設置する
インストール時に実行するCSVファイルは以下のパスに設置します。
/app/plugins/{プラグイン名}/config/sql/{プレフィックスなしのテーブル名}.csv
インストール用設定ファイルを準備する
インストール画面で利用する設定値を記述する設定ファイルは、config.php というファイル名で以下のパスに設置します。
/app/plugins/{プラグイン名}/config/config.php
設定ファイルには下記の設置値を記述します。
$title = '{プラグイン名(日本語可)}';
$description = '{プラグインの説明文}';
$adminLink = '{管理画面用初期ページへのリンク}';
$installMessage = '{インストール画面に表示するメッセージ}';
$author = '{プラグインの作成者名}';
$url = '{プラグイン作成者のホームページURL}';
インストールスクリプトを準備する
インストールスクリプトは init.php というファイル名で以下のパスに設置します。
このスクリプトは、PluginsController の admin_add メソッドより呼び出されます。
/app/plugins/{プラグイン名}/config/init.php
インストール用の スキーマファイル、初期データファイルを登録するには、下記メソッドを呼び出します。
$this->Plugin->initDb('{プラグイン名}');
バージョンファイルを準備する
プラグインのバージョンを示すバージョンファイルを次のパスに設置します。
/app/plugins/{プラグイン名}/VERSION.txt
バージョン番号は、上記ファイルの1行目に記述します。
baserCMSでは、3区切りまでのバージョン番号を認識します。
(例)1.2.3・・・{メジャーバージョン}.{マイナーバージョン}.{パッチ}


















