プラグインの概要

プラグインについて

freo本体の機能をプラグインで拡張することができます。freoのプラグインは、libs/freo/plugins/ に格納したPHPプログラムを実行するもので、この仕組みはfreo自体に組み込まれています。

この仕組みのほかに、

  • jQueryのプラグイン
  • Smartyのプラグイン
  • TinyMCEのプラグイン

などで機能を拡張することもできます。それらについては、それぞれの公式ページなどを参考にしてください。

以下の解説は、freo自体に組み込まれたプラグインの仕組みについてです。

命名規約

プラグインファイルがプログラムによって認識されるためには、特有の命名規約にしたがってファイル名を付ける必要があります。具体的には、次のように指定します。

type.name.php
  • type は、configinitpagebegindisplayend のうちのいずれかを選択します。それぞれの意味は後述します。
  • name は、半角英数字とアンダーバーで任意のプラグインIDを記述します。具体的には category_countbookmark など、プラグインの機能が連想できる文字列にするといいでしょう。(他のプラグインと重複しない名前にする必要があります。)

プラグインファイル内で関数やクラスを定義する場合、関数名やクラス名の先頭には freo_ という文字と type で指定した値と name で指定した値を記述します。例えばプラグインファイルを page.example.php にした場合、このファイル内で定義する関数は freo_page_example()freo_page_example_test() のような名前にします。

プラグインファイル内でテンプレートに値を渡す場合、変数名の先頭には plugin_ という文字と name で指定した値を記述します。例えばプラグインファイルを display.example.php にした場合、変数は plugin_exampleplugin_example_test のような名前にします。

これらは、他のプラグインと関数名や変数名が重複しないようにするための処置です。

実行のタイミング

プラグインファイルは、ファイル名の type によって読み込まれるタイミングが異なります。

typeconfig のファイル
プログラム本体の設定が読み込まれた直後に読み込まれます。プラグインの設定ファイルとして扱われるもので、どんなプラグインを作る場合でも必須のファイルです。
typeinit のファイル
プラグインの設定ファイルが読み込まれた直後に読み込まれます。主に、本来表示されるページを変更する場合に使用します。
typepage のファイル
typeinit のファイルが読み込まれた直後に読み込まれます。主に、専用のページを表示するプラグインを作成する場合に使用します。
typebegin のファイル
プログラム本体の処理が開始される直前に読み込まれます。主に、入力チェックを行うプラグインを作成する場合に使用します。
typedisplay のファイル
データを表示する直前に読み込まれます。主に、画面への表示を行うプラグインを作成する場合に使用します。
typeend のファイル
プログラム本体の処理が終了した直後に読み込まれます。主に、データの記録やメールの通知を行うプラグインを作成する場合に使用します。

グローバル変数

プログラム本体では $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 のような名前にします。

設定ファイル(基礎編)

上で紹介したように、プラグインのファイル名の typeconfig にすると、プラグインの設定ファイルとして利用できます。ただし、このファイル自体は普通の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/ 内に保存します。