EC-CUBE3で商品に項目を追加したいというご要望が多く寄せられています。

今回はプラグインを使用せずに商品情報へメーカー名(テキスト)を追加する方法をご紹介します。この手順を守って実施すると各ステップでエラーが起きないためおすすめです。ステップごとに問題が発生しないかどうか確認してみてください。

1. テーブルへのカラム追加

dtb_productテーブルへ”maker”という名前のカラムをtextタイプで追加してください。また、NULLを許可しておきます。
phpMyAdminやAdminerなどで追加すればかまいませんが、Migrationで作成する方法もありますので別の記事でご紹介します。

マイグレーションによるテーブルへの項目追加

2. エンティティへのプロパティ、セッターゲッター追加

src/Eccube/Entity/Product.php

Productクラス内に次のように$makerというプロパティとセッターメソッド・ゲッターメソッドをを追加してください。この時点ではまだProductエンティティはデータベースを参照しないため、getMaker()はsetMaker()しない限りNULLが返ってきます。

 

3. データベース定義ファイルへのカラム追加

src/Eccube/Resource/doctrine/Eccube.Entity.Product.dcm.yml

fields一覧に次の項目を追加してください。データベースとエンティティクラスを接続するのがdcm.yml(Doctrineマッピングファイル)です。この記述により、Productエンティティのmakerというプロパティはdtb_productのmakerカラムと接続されます。

 

4. フォーム定義ファイルへの項目追加

src/Eccube/Form/Type/Admin/ProductType.php

管理画面の商品登録フォームへ定義を追加します。

5. 管理画面(商品情報登録画面)へフォーム表示

template/admin/Product/product.twig

フォームを表示したい場所に記述します。form_row関数はform_widgetとform_errorsを同時に出力するヘルパー関数です。

もちろんform_widgetとform_errorsを利用いただいても問題ありません。ここまでで商品テーブルへメーカーの情報を追加し管理できるようになりました。

6. 商品詳細ページへの表示

template/default/Product/detail.twig

フロント側でメーカーの情報を出力します。Product/detail.twigでは好きな場所に{{ Product.maker }}を用いて表示することが可能です。メーカー情報が未登録であれば何も出力されません。

 

以上になります。今回は商品情報に項目を追加しましたが、この方法は会員情報や受注情報などにも応用可能です。
ぜひ参考にしてEC-CUBE3をカスタマイズしてみてください。

今後のバージョンアップにより手順が変わる可能性はありますが、その際はまたこのページでご紹介する予定です。

関連するカスタマイズ

商品マスターに在庫切れを表示するカスタマイズ... 今回ご紹介するのはEC-CUBE3の商品マスターに在庫切れを表示するカスタマイズになります。 Product・ProductClassの関係とEntityの基本動作がわかっていればそう難しいことではありません。 コントローラを修正しなくても、Twig内で完結させることができます。 商品マス...
商品に特定のタグが設定されているかどうかを判断する方法... 商品に対してセールや新着商品などのタグを設定し、商品一覧の中で目立たせたいことがあります。 そのような場合はProduct.phpへタグを判断するメソッドを追加しておくと非常に便利です。 次のコードはタグID、タグ名、タグエンティティ(Tagクラスのインスタンス)のいずれかを引数とし...
findByの便利な使い方を紹介! AND検索、OR検索、並び順、件数... EC-CUBE3ではSQLを自分で書くことはほとんどありません。代わりに世界的なORM - Object Relational MapperであるDoctrine(ドクトリン)をフルに活用しています。 Doctrineで必ずといっていいほど使用するfindBy(findOneBy)メソッドにつ...
商品マスターの並び替え・並び順変更方法 (登録日・価格)... 今回はEC-CUBE3の管理画面内にある商品マスターの並び順をカスタマイズしてみます。 商品マスターは登録されている商品の一覧を表示・絞り込みするための機能です。 商品マスターの並び順はレポジトリクラス(Eccube/Repository/ProductRepository.php)のメ...

弊社はEC-CUBE公式インテグレートパートナーです。