Ticket #494 (closed 新規開発: 修正済)

Opened 11 years ago

Last modified 9 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 本体のバージョンに強く依存しやすく, 第三者が簡単にモジュールを開発, 追加できないため, 新たにプラグインの仕組みを開発する.

パッチ

source:/branches/comu-ver2/patches/GoogleAnalytics_plugin.patch@18230

(r18345 で comu-ver2 にコミット済み)

設置場所

プラグインは, USER_DIR/plugins 以下に保存する.

定数

  • PLUGIN_DIR - "plugins/"
  • PLUGIN_PATH - USER_PATH . PLUGIN_DIR
  • PLUGIN_URL - USER_URL . PLUGIN_DIR

設定ファイル

各プラグインの設定は, 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
               |
               +- foo_plugin_dir -+
                                   |
                                   +- require.php
                                   +- index.php
                                   +- foo_plugin.php
                                   |
                                   +- tpl - example.tpl
                                   |
                                   +- classes - LC_Foo_Plugin.php
                                   |
                                   +- sql -+- install.sql
                                           +- deinstall.sql

  • require.php - html/require.php で自動的に require されるファイル
  • index.php - 管理画面のプラグイン設定メニューからリンクされるファイル
  • tpl ディレクトリ - プラグインで使用する Smarty テンプレートを格納します.
  • classes ディレクトリ - PHPクラスファイルを格納します.
  • sql - install/deinstall 時に実行する SQL を格納します.

ドキュメントの項目

  1. プラグインの名前 (name)
  2. 作成者 (author)
  3. プラグインのサイト (url)
  4. プラグインのバージョン (version)
  5. プラグインの短い説明 (description)
  6. 必要なEC-CUBE最小バージョン (min_eccube_ver)
  7. 注意事項/免責事項表示 (notice)
  8. ライセンス(lisence)

検討事項, TODO など

  • プラグイン管理ページを作る(登録/削除)
  • SC_Helper_Plugins_ParserFactory で plugins.xml パーサーの PHP4 と PHP5 の実装を分ける
  • プラグインでも bloc を使えるように, bloc クラスを改修
    • prefix が plugins/ だったら, plugin を見に行くように
    • インストール/アンインストールは, プラグイン管理から行う
    • 内容の編集はブロック編集でも可能だが推奨しない...
  • プラグインディレクトリの PHP ファイルを直接実行されないように .htaccess を置く
    order deny,allow
    deny from all
    
  • 参考実装として, bloc はすべてプラグインに移植してみたい
  • プラグイン用のユニットテストを格納するディレクトリを作っても良いかも
  • プラグインのURLを入力すると自動でインストールできるようにしたい
  • PC のみか, モバイルのみか, PC & モバイル対応か設定できるように

Attachments

custom_cart.zip Download (11.6 KB) - added by ramrun 11 years ago.
maintenance.zip Download (6.6 KB) - added by ramrun 11 years ago.

Change History

comment:1 Changed 11 years ago by nanasess

  • Description modified (diff)

comment:2 Changed 11 years ago by nanasess

  • Status changed from new to assigned

comment:3 Changed 11 years ago by nanasess

  • Description modified (diff)

comment:4 Changed 11 years ago by nanasess

  • Description modified (diff)

comment:5 Changed 11 years ago by nanasess

  • Description modified (diff)

comment:6 Changed 11 years ago by nanasess

  • Description modified (diff)

ドキュメント項目を追加

comment:7 Changed 11 years ago by nanasess

  • Description modified (diff)

comment:8 Changed 11 years ago by nanasess

  • Description modified (diff)

定数を修正

comment:9 Changed 11 years ago by nanasess

r18218 とのパッチを登録. Google Analytics のタグを埋めるためのプラグインの参考実装です.

まだ, TODO 項目のほとんどが実装できてない...(汗)

comment:10 follow-up: ↓ 12 Changed 11 years ago by nanasess

resize_image.php が機能しなくなる場合あり.

thanx. ramrun さん

 http://xoops.ec-cube.net/modules/newbb/viewtopic.php?forum=4&post_id=19396&topic_id=4345#forumpost19396

comment:11 Changed 11 years ago by nanasess

  • Description modified (diff)

パッチをバージョン管理したかったので, patches ディレクトリ以下にコミットしました

comment:12 in reply to: ↑ 10 Changed 11 years ago by nanasess

nanasess への返信

resize_image.php が機能しなくなる場合あり.

r18224 で修正しました

comment:13 Changed 11 years ago by nanasess

  • コミュニティのフィードバックをマージしました(r18230)
  • コードベースを r18229 に更新しました

comment:14 Changed 11 years ago by nanasess

  • Description modified (diff)

.htaccess の記述例を追加

Changed 11 years ago by ramrun

Changed 11 years ago by ramrun

comment:16 Changed 11 years ago by nanasess

  • Description modified (diff)

comment:17 Changed 11 years ago by nanasess

  • Milestone changed from EC-CUBE2.x.x to EC-CUBE2.5.0

comment:18 Changed 10 years ago by nanasess

  • Priority changed from to

comment:19 Changed 10 years ago by Seasoft

関連(上記未記載分) r18223 r18225 r18226 r18351 r18370 r18371 r18441

comment:20 Changed 10 years ago by Seasoft

関連(上記未記載分) r18380

comment:21 Changed 10 years ago by nanasess

r19661 でマージしました.

開発合宿 B, Eチームの成果物です

comment:22 Changed 10 years ago by AMUAMU

r19661 の変更が反映されていなかった高度なデータベース管理ページを、r20037にて、同一の構造(sendResponse使用、actionに処理を記述)に変更しました。

comment:23 Changed 10 years ago by kotani

  • Priority changed from to
  • Milestone changed from EC-CUBE2.11.0 to EC-CUBE2.11.1(仮)

#976 ([管理画面]プラグイン) で若干仕様変更。

comment:24 Changed 10 years ago by nanasess

  • 修正済み unset
  • Milestone changed from EC-CUBE2.11.1 to EC-CUBE2.11.2

r20870 不具合修正

  • プラグインの存在チェック, デバックログ出力を追加
  • プラグインのロード順位を指定できるよう修正

comment:25 Changed 9 years ago by kajiwara

  • Milestone changed from EC-CUBE2.11.2 to EC-CUBE2.12.0(仮)

根本解決に向けては、次期バージョンで対応する予定です。

comment:26 Changed 9 years ago by kajiwara

  • 修正済み set

プラグイン機能はVer2.12.0にて実装します。 #1603 に移行して対応します。

comment:27 Changed 9 years ago by kajiwara

  • Status changed from assigned to closed
  • Resolution set to 修正済

comment:28 Changed 9 years ago by h_yoshimoto

  • Milestone changed from EC-CUBE2.12.0alpha to EC-CUBE2.12.0beta
Note: See TracTickets for help on using tickets.