Ticket #494 (assigned 新規開発) — at Version 4
プラグイン機能
Reported by: | nanasess | Owned by: | nanasess |
---|---|---|---|
Priority: | 中 | Milestone: | EC-CUBE2.12.0beta |
Component: | その他 | Version: | コミュニティ (eccube-comu) |
Keywords: | Cc: | ||
修正済み: | yes |
Description (last modified by nanasess) (diff)
2.x で使用しているモジュール機能は, EC-CUBE 本体のバージョンに強く依存しやすく, 第三者が簡単にモジュールを開発, 追加できないため, 新たにプラグインの仕組みを開発する.
設置場所
プラグインは, USER_DIR/plugins 以下に保存する.
定数
- PLUGIN_DIR - USER_DIR/plugins
- PLUGIN_URL - USER_URL/plugins
設定ファイル
各プラグインの設定は, PLUGIN_DIR/plugins.xml に設定する.
plugins.xml の例
<?xml version="1.0" encoding="utf-8"?> <plugins> <plugin> <name>Google Analytics</name> <path>google_analytics</path> </plugin> <plugin> <name>カレンダーブロック</name> <path>calendar_block</path> </plugin> </plugins>
- plugins
- ルート要素です. 複数の plugin を含むことができます.
- plugin
- 各プラグインを定義します.
- name
- プラグインの名前を定義します. 任意の名前をつけることが可能です.
- path
- プラグインのデータファイルが格納されたパスを定義します. PLUGIN_DIR からのパスになります. 相対パスは使用できません. 半角英数字, 「_(アンダーバー)」のみ使用可能です.
管理画面からは, plugins.xml を読み取り, JavaScript でメニューにプラグイン一覧を表示する.
プラグインのファイル構成
plugins.xml の path 要素で設定したディレクトリに, 各プラグインのデータを格納します.
- plugins -+- plugins.xml +- .htaccess | +- same_plugin_dir -+ | +- require.php +- index.php +- same_plugin.php | +- tpl - example.tpl | +- classes - LC_Same_Plugin.php | +- sql -+- install.sql +- deinstall.sql
- require.php - html/require.php で自動的に require されるファイル
- index.php - 管理画面のプラグイン設定メニューからリンクされるファイル
- tpl ディレクトリ - プラグインで使用する Smarty テンプレートを格納します.
- classes ディレクトリ - PHPクラスファイルを格納します.
- sql - install/deinstall 時に実行する SQL を格納します.
検討事項, TODO など
- プラグイン管理ページを作る(登録/削除)
- SC_Helper_Plugins_ParserFactory で plugins.xml パーサーの PHP4 と PHP5 の実装を分ける
- プラグインでも bloc を使えるように, bloc クラスを改修
- prefix が plugins/ だったら, plugin を見に行くように
- インストール/アンインストールは, プラグイン管理から行う
- 内容の編集はブロック編集でも可能だが推奨しない...
- プラグインディレクトリの PHP ファイルを直接実行されないように .htaccess を置く
- 参考実装として, bloc はすべてプラグインに移植してみたい
- プラグイン用のユニットテストを格納するディレクトリを作っても良いかも
- プラグインのURLを入力すると自動でインストールできるようにしたい
Change History
Note: See
TracTickets for help on using
tickets.