Permalink
Switch branches/tags
Nothing to show
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
133 lines (101 sloc) 4.76 KB
title keywords tags sidebar permalink
リソースファイル、ブロック
plugin
plugin
home_sidebar
plugin_bp_asset

プラグインで画像ファイルやCSSファイルなどのリソースファイルを利用する場合、EC-CUBE本体の公開ディレクトリへリソースファイルをコピーする必要があります。

リソースファイルの配置場所

[プラグインコード]
  ├── Resource
  │   ├── assets
  │   │   ├── css
  │   │   │   └── xxxx.css
  │   │   ├── img
  │   │   │   ├── xxxx.gif
  │   │   │   ├── xxxx.jpg
  │   │   │   └── xxxx.png
  │   │   └── js
  │   │       └── xxxx.js

assetsディレクトリ配下のものを本体側の公開ディレクトリへコピーします。

本体側へのコピー

本体側へコピーする方法はいくつかありますが、プラグインマネージャー内で行うのが一番簡単です。

コピー先のディレクトリですが、

ECCUBEROOT
├── app
│   ├── Plugin
│   │   ├── [プラグインコード]
│   │   │   ├── Resource
│   │   │   │   ├── assets
│   │   │   │   │   ├── css
│   │   │   │   │   │   └── xxxx.css
│   │   │   │   │   ├── img
│   │   │   │   │   │   ├── xxxx.gif
│   │   │   │   │   │   ├── xxxx.jpg
│   │   │   │   │   │   └── xxxx.png
│   │   │   │   │   └── js
│   │   │   │   │       └── xxxx.js

〜
〜

├── html
│   ├── plugin
│   │   ├── [プラグインコード(全て小文字)]
│   │   │   └── assets
│   │   │   ├── css
│   │   │   │   └── xxxx.css
│   │   │   ├── img
│   │   │   │   ├── xxxx.gif
│   │   │   │   ├── xxxx.jpg
│   │   │   │   └── xxxx.png
│   │   │   └── js
│   │   │       └── xxxx.js

htmlディレクトリ直下のpluginディレクトリ内にプラグインコードでディレクトリを作成して配置します。ディレクトリを作成する場合、全て小文字でプラグインコードを作成した方が大文字を区別しなくて済むのでオススメです。

ブロックの場合

リソースファイルではないのですが、プラグインでブロックを追加したい時があります。その場合、リソースファイルと同様に本体側へコピーする必要があります。 こちらも同様にプラグインマネージャー内でコピーを行う方法が簡単です。

ECCUBEROOT
├── app
│   ├── Plugin
│   │   ├── [プラグインコード]
│   │   │   ├─ Resource
│   │   │   │        └── template
│   │   │   │           ├── Block
│   │   │   │           │   └── XXXX.twig
│   │   │   │           ├── admin
│   │   │   │           │   └── XXXX.twig
│   │   │   │           └── XXXX.twig
│   ├── template
│   │   ├── default
│   │   │   ├─ Block
│   │   │   │      └── template
│   │   │   │         ├── admin
│   │   │   │         └── default
│   │   │   │             ├── Block
│   │   │   │             │         └── XXXX.twig
  • ブロックファイルのコピー例
$file = new Filesystem();
// ブロックファイルをコピー
$file->copy('コピー元ファイル', $app['config']['block_realdir'] . '/' . 'コピー先ファイル名');

また、ブロック追加時はdtb_blockテーブルへ追加する必要があります。

$DeviceType = $app['eccube.repository.master.device_type']->find(DeviceType::DEVICE_TYPE_PC);

$Block = $app['eccube.repository.block']->findOrCreate(null, $DeviceType);

// Blockの登録
$Block->setName('ブロック名')
                ->setFileName('ブロックファイル名');
                ->setDeletableFlg(Constant::ENABLED);

$em->persist($Block);
$em->flush($Block);

※本体側でトランザクション制御をしれくれるため、ロールバック処理などは必要ありません。

リソースファイルの削除

プラグインを削除する場合、リソースファイルを削除するのを忘れないでください。