プラグインの概要
プラグインについて
freo本体の機能をプラグインで拡張することができます。freoのプラグインは、libs/freo/plugins/ に格納したPHPプログラムを実行するもので、この仕組みはfreo自体に組み込まれています。
この仕組みのほかに、
- jQueryのプラグイン
- Smartyのプラグイン
- TinyMCEのプラグイン
などで機能を拡張することもできます。それらについては、それぞれの公式ページなどを参考にしてください。
以下の解説は、freo自体に組み込まれたプラグインの仕組みについてです。
命名規約
プラグインファイルがプログラムによって認識されるためには、特有の命名規約にしたがってファイル名を付ける必要があります。具体的には、次のように指定します。
type.name.php
typeは、config・init・page・begin・display・endのうちのいずれかを選択します。それぞれの意味は後述します。nameは、半角英数字とアンダーバーで任意のプラグインIDを記述します。具体的にはcategory_countやbookmarkなど、プラグインの機能が連想できる文字列にするといいでしょう。(他のプラグインと重複しない名前にする必要があります。)
プラグインファイル内で関数やクラスを定義する場合、関数名やクラス名の先頭には freo_ という文字と type で指定した値と name で指定した値を記述します。例えばプラグインファイルを page.example.php にした場合、このファイル内で定義する関数は freo_page_example() や freo_page_example_test() のような名前にします。
プラグインファイル内でテンプレートに値を渡す場合、変数名の先頭には plugin_ という文字と name で指定した値を記述します。例えばプラグインファイルを display.example.php にした場合、変数は plugin_example や plugin_example_test のような名前にします。
これらは、他のプラグインと関数名や変数名が重複しないようにするための処置です。
実行のタイミング
プラグインファイルは、ファイル名の type によって読み込まれるタイミングが異なります。
typeがconfigのファイル- プログラム本体の設定が読み込まれた直後に読み込まれます。プラグインの設定ファイルとして扱われるもので、どんなプラグインを作る場合でも必須のファイルです。
typeがinitのファイル- プラグインの設定ファイルが読み込まれた直後に読み込まれます。主に、本来表示されるページを変更する場合に使用します。
typeがpageのファイルtypeがinitのファイルが読み込まれた直後に読み込まれます。主に、専用のページを表示するプラグインを作成する場合に使用します。typeがbeginのファイル- プログラム本体の処理が開始される直前に読み込まれます。主に、入力チェックを行うプラグインを作成する場合に使用します。
typeがdisplayのファイル- データを表示する直前に読み込まれます。主に、画面への表示を行うプラグインを作成する場合に使用します。
typeがendのファイル- プログラム本体の処理が終了した直後に読み込まれます。主に、データの記録やメールの通知を行うプラグインを作成する場合に使用します。
グローバル変数
プログラム本体では $freo というグローバル変数を定義しており、プラグイン側でこれを利用することができます。
$freo->smarty- Smarty(テンプレート)を参照できます。
例:$freo->smarty->assign('xxx', $xxx); $freo->pdo- PDO(データベース)を参照できます。
例:$freo->pdo->query('SELECT * FROM xxx LIMIT 10'); $freo->core- 基本情報取得(設置URLなど)を参照できます。
例:$freo->core['http_url']; $freo->agent- ブラウザ情報を参照できます。
例:$freo->agent['career']; $freo->parameters- パラメーター(URLルーティングによって得た値)を参照できます。
例:$freo->parameters[1]; $freo->user- ユーザー情報(アクセスしているユーザーの情報)を参照できます。
例:$freo->user['authority']; $freo->refer- 登録情報(データベースへの登録内容の一部)を参照できます。
例:$freo->refer['categories']; $freo->config- 設定を参照できます。
例:$freo->config['basis']['mail_prefix']; $freo->plugin- プラグイン情報を参照できます。
例:$freo->plugin['entry_calender']['version'];
テンプレートファイル
プラグイン用にテンプレートを用意する場合、テンプレートファイルは templates/plugins/ ディレクトリ内にプラグインごとのディレクトリを作成し、その中に作成します。例えばプラグインファイルを page.example.php にした場合、テンプレートは templates/plugins/example/default.html のような名前にします。
設定ファイル(基礎編)
上で紹介したように、プラグインのファイル名の type を config にすると、プラグインの設定ファイルとして利用できます。ただし、このファイル自体は普通のPHPプログラムなので、内容を編集するにはテキストエディタとFTPソフトが必要です。
これとは別に、管理ページの「管理メニュー → システム → 設定管理」から編集できる設定ファイルを用意することができます。このような設定ファイルを作成する場合、設定ファイルは configs/plugins/ ディレクトリ内に作成します。ファイル名には name で指定した値を、拡張子には ini を指定します。例えばプラグインIDを example にした場合、設定ファイルは example.ini という名前にします。
設定ファイルの内容は、一例ですが以下のようになります。
[基本設定]
;タイトル
title = "Mini Blog"
;ブログの概要
description = "サイトの更新情報配信ブログ。"
;ブログからの戻り先
back_url = "http://www.example.com/"
;exit
これで、管理ページの設定管理画面にプラグイン名とリンクが追加され、クリックすると設定画面が表示されます。
プラグインの設定は上記のように
[見出し]
;設定項目の説明
設定を割り当てる変数 = 設定内容
;exit
のように記述します。最後の ;exit は、決まり文句として必ず記述しておいてください。
これでプログラムからはグローバル変数 $freo->config で値を参照でき、$freo->config['plugin']['プラグインID']['設定を割り当てる変数'] とすると 設定内容を取得できます。具体的には
$freo->config['plugin']['example']['back_url']
のようになります。
また、テンプレートからは $freo.config.plugin.プラグインID.設定を割り当てる変数 で設定内容を取得できます。具体的には
{$freo.config.plugin.example.back_url}
のようになります。
設定ファイル(応用編)
管理ページの設定管理画面から設定を行う際、設定を割り当てる変数 = 設定内容 の形式で、テキストエリア内に設定内容が表示されます。
これでも利用できるのですが、より解りやすくするために、1行入力欄やセレクトボックスなどで設定を行うこともできます。例えば、
;title char(30)
[基本設定]
;タイトル
title = "Mini Blog"
;ブログの概要
description = "サイトの更新情報配信ブログ。"
;ブログからの戻り先
back_url = "http://www.example.com/"
;exit
このように、先頭に ;title char(30) を追加すると、タイトルの設定欄が一行入力欄になります。これは「title の編集には char(一行入力)を使用する。入力ボックスのサイズは 30 にする。」という意味です。
char だけでなく、以下の値が利用できます。
int- 数値入力欄になります。
char- テキスト入力欄(一行入力)になります。
text- テキスト入力欄(複数行入力)になります。
bool- ON/OFFの選択欄になります。
enum- ラジオボタンで1つの値を選択できる欄になります。
set- チェックボックスで複数の値を選択できる欄になります。
各値の具体的な利用方法は以下のようになります。配布プログラム本体や配布プラグインも参考にしてみてください。
;test1 int(4) "件"
;test2 char(50)
;test3 text
;test4 bool "有効にする|無効にする"
;test5 enum "value1:項目1|value2:項目2|value3:項目3"
;test6 set "value1:項目1|value2:項目2|value3:項目3"
[設定例]
;数値入力
test1 = 10
;テキスト入力
test2 = "一行入力です。"
;テキスト入力
test3 = "複数行入力です。\n複数行入力です。"
;ON/OFFの選択
test4 = On
;ラジオボタン
test5 = "value1"
;チェックボックス
test6 = "value2,value3"
;exit
データ記録ファイル
プラグイン用にデータ記録用のファイルを用意する場合、ファイル名には name で指定した値を使用して files/plugins/ ディレクトリ内に配置します。拡張子は任意のものを設定してください。例えばプラグインファイルを page.example.php にした場合、データ記録用は files/plugins/example.log 内に保存します。
複数のファイルを用意する場合、files/plugins/ ディレクトリ内にプラグインごとのディレクトリを作成し、その中に保存します。例えばプラグインファイルを page.example.php にした場合、データ記録用ファイルは files/plugins/example/ 内に保存します。
アップロードファイル
プラグイン用にアップロードファイル格納ディレクトリを用意する場合、files/plugins/ ディレクトリ内にプラグインごとのディレクトリを作成し、その中に保存します。例えばプラグインファイルを page.example.php にした場合、アップロードファイルは files/plugins/example/ 内に保存します。
プラグイン用に一時ファイル格納ディレクトリを用意する場合、files/temporaries/plugins/ ディレクトリ内にプラグインごとのディレクトリを作成し、その中に保存します。例えばプラグインファイルを page.example.php にした場合、一時ファイルは files/temporaries/plugins/example/ 内に保存します。