Ticket #494 (assigned 新規開発) — at Version 4

Opened 15 years ago

Last modified 12 years ago

プラグイン機能

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

comment:1 Changed 15 years ago by nanasess

  • Description modified (diff)

comment:2 Changed 15 years ago by nanasess

  • Status changed from new to assigned

comment:3 Changed 15 years ago by nanasess

  • Description modified (diff)

comment:4 Changed 15 years ago by nanasess

  • Description modified (diff)
Note: See TracTickets for help on using tickets.