Edit me

プラグインで画像ファイルや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);

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

リソースファイルの削除

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

Tags: plugin