SlideShare ist ein Scribd-Unternehmen logo
1 von 13
Downloaden Sie, um offline zu lesen
Copyright © LOCKON CO.,LTD.All Rights Reserved.
カスタマイズ
Copyright © LOCKON CO.,LTD.All Rights Reserved.
本体カスタマイズ機構
Copyright © LOCKON CO.,LTD.All Rights Reserved.
本体カスタマイズ機構
3
概要
EC-CUBEの挙動をデフォルトから変更したい
• 拡張機構を利用した拡張
– カスタマイズディレクトリにPHPファイルを作成することで拡張できる
• プラグインによる拡張
• EC-CUBE本体のソースコード(./src)を変更
Copyright © LOCKON CO.,LTD.All Rights Reserved.
本体カスタマイズ機構
4
カスタマイズディレクトリ
カスタマイズディレクトリ
このディレクトリ以下にファイルを置くと、
自動的に認識する。
(現状はAcmeという仮のディレクトリ名前)
Copyright © LOCKON CO.,LTD.All Rights Reserved.
本体カスタマイズ機構
5
概要
• Controller
• Repository
• FormType
• Entity (*EC-CUBE独自)
• Service (*EC-CUBE独自)
• Symfonyの機能を使った拡張
※詳細な内容は、開発ドキュメントサイトに記載
Copyright © LOCKON CO.,LTD.All Rights Reserved.
本体カスタマイズ機構
6
Controller カスタマイズ
• 新しいルーティングを追加するときに利用
• コントローラ内で処理ロジックを書くことも可能(DB更新など)
• EntityManagerやFormFactoryなど、各種サービスを利用可能
• 参照 http://doc3n.ec-cube.net/customize_controller
class SamplePageController extends AbstractController
{
/**
* @Method("GET")
* @Route("/sample")
*/
public function testMethod()
{...}
Copyright © LOCKON CO.,LTD.All Rights Reserved.
本体カスタマイズ機構
7
Repository カスタマイズ
• 検索結果の並び順や条件をカスタマイズする時に利用。
• Repositoryクラスで実行するSQLをカスタマイズすることができる。
• 参照 http://doc3n.ec-cube.net/customize_repository
インターフェイス/クラス 概要
QueryCustomizer QueryBuilderを自由に変更
OrderByCustomizer ソート順を変更する
WhereCustomizer 検索条件を追加する
JoinCustomizer 結合するテーブルを追加する
class AdminProductListCustomizer extends OrderByCustomizer
{
/**
* 常に商品IDでソートする。
*/
protected function createStatements($params, $queryKey)
{
return [new OrderByClause('p.id')];
}
Copyright © LOCKON CO.,LTD.All Rights Reserved.
本体カスタマイズ機構
8
FormType カスタマイズ
• フォームの項目を入力必須にするなどのカスタマイズ時に利用。
• 既存のFormTypeを置き換えたり、オプションを変更できる。
• SymfonyのFormExtensionの仕組みを利用している。
• 参照 http://doc3n.ec-cube.net/customize_formtype
class CompanyNameRequiredExtension extends AbstractTypeExtension
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$options = $builder->get('company_name')->getOptions();
$options['required'] = true; // 入力必須にする
$options['constraints'] = [ new NotBlank() ]; // 空の入力NGのアサーション追加
$options['attr']['placeholder'] = ‘会社名’; // プレースホルダー追加
$builder->add('company_name', TextType::class, $options);
}
Copyright © LOCKON CO.,LTD.All Rights Reserved.
本体カスタマイズ機構
9
Entity カスタマイズ (EC-CUBE独自)
• 商品や会員情報に項目を追加したいときに利用。
• traitの仕組みを使うことで、既存のテーブルにフィールドを追加できる。
• 拡張したフィールドは、既存のフィールドと同じようにアクセス可能。
• 参照 http://doc3n.ec-cube.net/customize_entity
/**
* @EntityExtension("Eccube¥Entity¥Product")
*/
trait ProductTrait
{
/**
* @ORM¥Column(type="string", nullable=true)
*/
public $maker_name;
# Proxy クラスを生成
bin/console eccube:generate:proxies
# 実行する SQL を確認
bin/console doctrine:schema:update --dump-sql
# SQL を実行
bin/console doctrine:schema:update --dump-sql --force
Copyright © LOCKON CO.,LTD.All Rights Reserved.
本体カスタマイズ機構
10
Service カスタマイズ (EC-CUBE独自)
購入フローまわりのカスタマイズの難易度を下げる仕組み。
参照 http://doc3n.ec-cube.net/customize_service
▼カート(Cart)
• 同じ商品・同じ商品規格でも別々の明細に分割する(CartItemComparator)
– ギフトラッピングなどの商品オプションを追加するカスタマイズ
• 支払方法が異なる商品を同時にカートに入れられるようにする(CartItemAllocator)
– 予約商品など、 同時にカートに投入したいが、別々に決済したい(注文を分けたい) といったカスタマイズ
▼購入フロー(PurchaseFlow)
• 送料計算のカスタマイズなどで利用可能
• 本体でもポイント機能の実装で利用している
• 3.nではフロント/管理画面で共通化
Copyright © LOCKON CO.,LTD.All Rights Reserved.
本体カスタマイズ機構
11
Symfonyの機能を使った拡張
SymfonyやDoctrineが提供している拡張機構を利用可能。
参照 http://doc3n.ec-cube.net/customize_symfony
• Symfony Event
• Command
• Doctrine Event
Copyright © LOCKON CO.,LTD.All Rights Reserved.
EC-CUBE 3.n 開発ドキュメント
Copyright © LOCKON CO.,LTD.All Rights Reserved.
EC-CUBE 3.n 開発ドキュメント
13
• EC-CUBE 3.n をカスタマイズして利用される方向けのドキュメントを整備中。
http://doc3n.ec-cube.net/

Weitere ähnliche Inhalte

Was ist angesagt?

Pythonユーザのための構成管理入門 #pyconapac
Pythonユーザのための構成管理入門 #pyconapacPythonユーザのための構成管理入門 #pyconapac
Pythonユーザのための構成管理入門 #pyconapac
Takeshi Komiya
 
AWSマイスターシリーズReloaded(AWS Beanstalk)
AWSマイスターシリーズReloaded(AWS Beanstalk)AWSマイスターシリーズReloaded(AWS Beanstalk)
AWSマイスターシリーズReloaded(AWS Beanstalk)
Akio Katayama
 

Was ist angesagt? (20)

Ansibleで味わうHelion OpenStack
Ansibleで味わうHelion OpenStackAnsibleで味わうHelion OpenStack
Ansibleで味わうHelion OpenStack
 
Hyper-V を Windows PowerShell から管理する
Hyper-V を Windows PowerShell から管理するHyper-V を Windows PowerShell から管理する
Hyper-V を Windows PowerShell から管理する
 
Ubuntu Maas1.9 クイックセットアップガイド
Ubuntu Maas1.9 クイックセットアップガイドUbuntu Maas1.9 クイックセットアップガイド
Ubuntu Maas1.9 クイックセットアップガイド
 
FX.php最新情報 2013
FX.php最新情報 2013FX.php最新情報 2013
FX.php最新情報 2013
 
Windows7でもchefしたい!
Windows7でもchefしたい!Windows7でもchefしたい!
Windows7でもchefしたい!
 
Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化
 
AWS EC2 CentOS6.5+WordPress②
AWS EC2 CentOS6.5+WordPress②AWS EC2 CentOS6.5+WordPress②
AWS EC2 CentOS6.5+WordPress②
 
最近の PowerShell のお話
最近の PowerShell のお話最近の PowerShell のお話
最近の PowerShell のお話
 
Pythonユーザのための構成管理入門 #pyconapac
Pythonユーザのための構成管理入門 #pyconapacPythonユーザのための構成管理入門 #pyconapac
Pythonユーザのための構成管理入門 #pyconapac
 
これからはじめるCoda2とSublime Text 2
これからはじめるCoda2とSublime Text 2これからはじめるCoda2とSublime Text 2
これからはじめるCoda2とSublime Text 2
 
AWSマイスターシリーズReloaded(AWS Beanstalk)
AWSマイスターシリーズReloaded(AWS Beanstalk)AWSマイスターシリーズReloaded(AWS Beanstalk)
AWSマイスターシリーズReloaded(AWS Beanstalk)
 
Ansible quickstart
Ansible quickstartAnsible quickstart
Ansible quickstart
 
さくらのDockerコンテナホスティング-Arukasの解説とインフラを支える技術(July Tech Festa 2016 『IoTxAIxインフラ時代...
さくらのDockerコンテナホスティング-Arukasの解説とインフラを支える技術(July Tech Festa 2016 『IoTxAIxインフラ時代...さくらのDockerコンテナホスティング-Arukasの解説とインフラを支える技術(July Tech Festa 2016 『IoTxAIxインフラ時代...
さくらのDockerコンテナホスティング-Arukasの解説とインフラを支える技術(July Tech Festa 2016 『IoTxAIxインフラ時代...
 
Composer
 Composer Composer
Composer
 
IT Pro のための PowerShell スクリプティング
IT Pro のための PowerShell スクリプティングIT Pro のための PowerShell スクリプティング
IT Pro のための PowerShell スクリプティング
 
ロール適用ツール ~ansible art~
ロール適用ツール ~ansible art~ロール適用ツール ~ansible art~
ロール適用ツール ~ansible art~
 
201803_EC-CUBE開発進捗説明会_4_カスタマイズデモ
201803_EC-CUBE開発進捗説明会_4_カスタマイズデモ201803_EC-CUBE開発進捗説明会_4_カスタマイズデモ
201803_EC-CUBE開発進捗説明会_4_カスタマイズデモ
 
cpanfile
cpanfilecpanfile
cpanfile
 
恐るべきApache, Web勉強会@福岡
恐るべきApache, Web勉強会@福岡恐るべきApache, Web勉強会@福岡
恐るべきApache, Web勉強会@福岡
 
ヤフー発のメッセージキュー 「Pulsar」のご紹介@jjug ccc 20171118
ヤフー発のメッセージキュー 「Pulsar」のご紹介@jjug ccc 20171118ヤフー発のメッセージキュー 「Pulsar」のご紹介@jjug ccc 20171118
ヤフー発のメッセージキュー 「Pulsar」のご紹介@jjug ccc 20171118
 

Ähnlich wie 201803_EC-CUBE開発進捗説明会_3_カスタマイズ

eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」
eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」
eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」
ericsagnes
 
20120822_dstn技術交流会_dstnのご紹介と最新技術情報
20120822_dstn技術交流会_dstnのご紹介と最新技術情報20120822_dstn技術交流会_dstnのご紹介と最新技術情報
20120822_dstn技術交流会_dstnのご紹介と最新技術情報
dstn
 
[AWSマイスターシリーズ] AWS Elastic Beanstalk
[AWSマイスターシリーズ] AWS Elastic Beanstalk[AWSマイスターシリーズ] AWS Elastic Beanstalk
[AWSマイスターシリーズ] AWS Elastic Beanstalk
Amazon Web Services Japan
 
Webサーバ構築で心がけるべき二つのこと
Webサーバ構築で心がけるべき二つのことWebサーバ構築で心がけるべき二つのこと
Webサーバ構築で心がけるべき二つのこと
TrinityT _
 
Aeolus Conductorによる複数環境へのデプロイ自動化
Aeolus Conductorによる複数環境へのデプロイ自動化Aeolus Conductorによる複数環境へのデプロイ自動化
Aeolus Conductorによる複数環境へのデプロイ自動化
Etsuji Nakai
 

Ähnlich wie 201803_EC-CUBE開発進捗説明会_3_カスタマイズ (20)

Alfrescoクラスタリング入門
Alfrescoクラスタリング入門Alfrescoクラスタリング入門
Alfrescoクラスタリング入門
 
ChefユーザのためのAnsible入門
ChefユーザのためのAnsible入門ChefユーザのためのAnsible入門
ChefユーザのためのAnsible入門
 
eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」
eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」
eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」
 
最近、僕がハマったFuelPHPの紹介
最近、僕がハマったFuelPHPの紹介最近、僕がハマったFuelPHPの紹介
最近、僕がハマったFuelPHPの紹介
 
20120822_dstn技術交流会_dstnのご紹介と最新技術情報
20120822_dstn技術交流会_dstnのご紹介と最新技術情報20120822_dstn技術交流会_dstnのご紹介と最新技術情報
20120822_dstn技術交流会_dstnのご紹介と最新技術情報
 
OpenNebula on Ubuntu
OpenNebula on UbuntuOpenNebula on Ubuntu
OpenNebula on Ubuntu
 
Elastic beanstalk docker_support
Elastic beanstalk docker_supportElastic beanstalk docker_support
Elastic beanstalk docker_support
 
PHP on Cloud
PHP on CloudPHP on Cloud
PHP on Cloud
 
[AWSマイスターシリーズ] AWS Elastic Beanstalk
[AWSマイスターシリーズ] AWS Elastic Beanstalk[AWSマイスターシリーズ] AWS Elastic Beanstalk
[AWSマイスターシリーズ] AWS Elastic Beanstalk
 
20140409勉強会
20140409勉強会20140409勉強会
20140409勉強会
 
20180704 AWS Black Belt Online Seminar Amazon Elastic File System (Amazon EFS...
20180704 AWS Black Belt Online Seminar Amazon Elastic File System (Amazon EFS...20180704 AWS Black Belt Online Seminar Amazon Elastic File System (Amazon EFS...
20180704 AWS Black Belt Online Seminar Amazon Elastic File System (Amazon EFS...
 
Webサーバ構築で心がけるべき二つのこと
Webサーバ構築で心がけるべき二つのことWebサーバ構築で心がけるべき二つのこと
Webサーバ構築で心がけるべき二つのこと
 
Oracle cloud infrastructure shared file service comparison 20181019 ss
Oracle cloud infrastructure shared file service comparison 20181019 ssOracle cloud infrastructure shared file service comparison 20181019 ss
Oracle cloud infrastructure shared file service comparison 20181019 ss
 
Application Deployment on AWS
Application Deployment on AWSApplication Deployment on AWS
Application Deployment on AWS
 
Japan AWS User Group (JAWS-UG) Hokuriku 勉強会 第8回 ハンズオン AWS+オープンソースグループウェアの構築
Japan AWS User Group (JAWS-UG) Hokuriku勉強会 第8回 ハンズオン AWS+オープンソースグループウェアの構築Japan AWS User Group (JAWS-UG) Hokuriku勉強会 第8回 ハンズオン AWS+オープンソースグループウェアの構築
Japan AWS User Group (JAWS-UG) Hokuriku 勉強会 第8回 ハンズオン AWS+オープンソースグループウェアの構築
 
WordPressAPI
WordPressAPIWordPressAPI
WordPressAPI
 
ノンプログラマのためのウェブサーバ入門
ノンプログラマのためのウェブサーバ入門	ノンプログラマのためのウェブサーバ入門
ノンプログラマのためのウェブサーバ入門
 
Oci file storage service deep dive 20181001 ss
Oci file storage service deep dive 20181001 ssOci file storage service deep dive 20181001 ss
Oci file storage service deep dive 20181001 ss
 
ACI Kubernetes Integration
ACI Kubernetes IntegrationACI Kubernetes Integration
ACI Kubernetes Integration
 
Aeolus Conductorによる複数環境へのデプロイ自動化
Aeolus Conductorによる複数環境へのデプロイ自動化Aeolus Conductorによる複数環境へのデプロイ自動化
Aeolus Conductorによる複数環境へのデプロイ自動化
 

Mehr von EC-CUBE

201706 EC-CUBE 3.1開発進捗説明会:デザインカスタマイズ&新機能編 01_全体方針
201706 EC-CUBE 3.1開発進捗説明会:デザインカスタマイズ&新機能編 01_全体方針201706 EC-CUBE 3.1開発進捗説明会:デザインカスタマイズ&新機能編 01_全体方針
201706 EC-CUBE 3.1開発進捗説明会:デザインカスタマイズ&新機能編 01_全体方針
EC-CUBE
 

Mehr von EC-CUBE (18)

202101 EC-CUBE 4.1 開発進捗説明会
202101 EC-CUBE 4.1 開発進捗説明会202101 EC-CUBE 4.1 開発進捗説明会
202101 EC-CUBE 4.1 開発進捗説明会
 
2020_EC-CUBEパートナー新年会発表資料
2020_EC-CUBEパートナー新年会発表資料2020_EC-CUBEパートナー新年会発表資料
2020_EC-CUBEパートナー新年会発表資料
 
201809_EC-CUBE4.0概要説明
201809_EC-CUBE4.0概要説明201809_EC-CUBE4.0概要説明
201809_EC-CUBE4.0概要説明
 
201803_EC-CUBE開発進捗説明会_6_多言語化
201803_EC-CUBE開発進捗説明会_6_多言語化201803_EC-CUBE開発進捗説明会_6_多言語化
201803_EC-CUBE開発進捗説明会_6_多言語化
 
201803_EC-CUBE開発進捗説明会_5_管理画面UI改善
201803_EC-CUBE開発進捗説明会_5_管理画面UI改善201803_EC-CUBE開発進捗説明会_5_管理画面UI改善
201803_EC-CUBE開発進捗説明会_5_管理画面UI改善
 
201803_EC-CUBE開発進捗説明会_1_3.n概要説明
201803_EC-CUBE開発進捗説明会_1_3.n概要説明201803_EC-CUBE開発進捗説明会_1_3.n概要説明
201803_EC-CUBE開発進捗説明会_1_3.n概要説明
 
20171117 最新機能紹介
20171117 最新機能紹介 20171117 最新機能紹介
20171117 最新機能紹介
 
20171122_VAddyMeetUp_EC-CUBEでのVAddy活用事例
20171122_VAddyMeetUp_EC-CUBEでのVAddy活用事例20171122_VAddyMeetUp_EC-CUBEでのVAddy活用事例
20171122_VAddyMeetUp_EC-CUBEでのVAddy活用事例
 
201710_EC-CUBE 開発進捗説明会:拡張APIダイジェスト
201710_EC-CUBE 開発進捗説明会:拡張APIダイジェスト201710_EC-CUBE 開発進捗説明会:拡張APIダイジェスト
201710_EC-CUBE 開発進捗説明会:拡張APIダイジェスト
 
201710_EC-CUBE 開発進捗説明会:開発背景・今後のスケジュール
201710_EC-CUBE 開発進捗説明会:開発背景・今後のスケジュール201710_EC-CUBE 開発進捗説明会:開発背景・今後のスケジュール
201710_EC-CUBE 開発進捗説明会:開発背景・今後のスケジュール
 
201710_EC-CUBE 開発進捗説明会:Customize・Pluginライブコーディン
201710_EC-CUBE 開発進捗説明会:Customize・Pluginライブコーディン201710_EC-CUBE 開発進捗説明会:Customize・Pluginライブコーディン
201710_EC-CUBE 開発進捗説明会:Customize・Pluginライブコーディン
 
201710_EC-CUBE 開発進捗説明会:管理画面UI改善
201710_EC-CUBE 開発進捗説明会:管理画面UI改善201710_EC-CUBE 開発進捗説明会:管理画面UI改善
201710_EC-CUBE 開発進捗説明会:管理画面UI改善
 
201706 EC-CUBE 3.1開発進捗説明会:デザインカスタマイズ&新機能編 04_機能改善
201706 EC-CUBE 3.1開発進捗説明会:デザインカスタマイズ&新機能編 04_機能改善201706 EC-CUBE 3.1開発進捗説明会:デザインカスタマイズ&新機能編 04_機能改善
201706 EC-CUBE 3.1開発進捗説明会:デザインカスタマイズ&新機能編 04_機能改善
 
201706 EC-CUBE 3.1開発進捗説明会:デザインカスタマイズ&新機能編 02_デザインカスタマイズ
201706 EC-CUBE 3.1開発進捗説明会:デザインカスタマイズ&新機能編 02_デザインカスタマイズ201706 EC-CUBE 3.1開発進捗説明会:デザインカスタマイズ&新機能編 02_デザインカスタマイズ
201706 EC-CUBE 3.1開発進捗説明会:デザインカスタマイズ&新機能編 02_デザインカスタマイズ
 
201706 EC-CUBE 3.1開発進捗説明会:デザインカスタマイズ&新機能編 01_全体方針
201706 EC-CUBE 3.1開発進捗説明会:デザインカスタマイズ&新機能編 01_全体方針201706 EC-CUBE 3.1開発進捗説明会:デザインカスタマイズ&新機能編 01_全体方針
201706 EC-CUBE 3.1開発進捗説明会:デザインカスタマイズ&新機能編 01_全体方針
 
201703 EC-CUBE 3.1開発方針説明会:機能カスタマイズ編 02_機能カスタマイズのためのアーキテクチャ
201703 EC-CUBE 3.1開発方針説明会:機能カスタマイズ編 02_機能カスタマイズのためのアーキテクチャ201703 EC-CUBE 3.1開発方針説明会:機能カスタマイズ編 02_機能カスタマイズのためのアーキテクチャ
201703 EC-CUBE 3.1開発方針説明会:機能カスタマイズ編 02_機能カスタマイズのためのアーキテクチャ
 
201703 EC-CUBE 3.1開発方針説明会:機能カスタマイズ編 01_全体方針
201703 EC-CUBE 3.1開発方針説明会:機能カスタマイズ編 01_全体方針201703 EC-CUBE 3.1開発方針説明会:機能カスタマイズ編 01_全体方針
201703 EC-CUBE 3.1開発方針説明会:機能カスタマイズ編 01_全体方針
 
2016 07-16 PHPカンファレンス関西2016(EC-CUBE)
2016 07-16 PHPカンファレンス関西2016(EC-CUBE)2016 07-16 PHPカンファレンス関西2016(EC-CUBE)
2016 07-16 PHPカンファレンス関西2016(EC-CUBE)
 

201803_EC-CUBE開発進捗説明会_3_カスタマイズ

  • 1. Copyright © LOCKON CO.,LTD.All Rights Reserved. カスタマイズ
  • 2. Copyright © LOCKON CO.,LTD.All Rights Reserved. 本体カスタマイズ機構
  • 3. Copyright © LOCKON CO.,LTD.All Rights Reserved. 本体カスタマイズ機構 3 概要 EC-CUBEの挙動をデフォルトから変更したい • 拡張機構を利用した拡張 – カスタマイズディレクトリにPHPファイルを作成することで拡張できる • プラグインによる拡張 • EC-CUBE本体のソースコード(./src)を変更
  • 4. Copyright © LOCKON CO.,LTD.All Rights Reserved. 本体カスタマイズ機構 4 カスタマイズディレクトリ カスタマイズディレクトリ このディレクトリ以下にファイルを置くと、 自動的に認識する。 (現状はAcmeという仮のディレクトリ名前)
  • 5. Copyright © LOCKON CO.,LTD.All Rights Reserved. 本体カスタマイズ機構 5 概要 • Controller • Repository • FormType • Entity (*EC-CUBE独自) • Service (*EC-CUBE独自) • Symfonyの機能を使った拡張 ※詳細な内容は、開発ドキュメントサイトに記載
  • 6. Copyright © LOCKON CO.,LTD.All Rights Reserved. 本体カスタマイズ機構 6 Controller カスタマイズ • 新しいルーティングを追加するときに利用 • コントローラ内で処理ロジックを書くことも可能(DB更新など) • EntityManagerやFormFactoryなど、各種サービスを利用可能 • 参照 http://doc3n.ec-cube.net/customize_controller class SamplePageController extends AbstractController { /** * @Method("GET") * @Route("/sample") */ public function testMethod() {...}
  • 7. Copyright © LOCKON CO.,LTD.All Rights Reserved. 本体カスタマイズ機構 7 Repository カスタマイズ • 検索結果の並び順や条件をカスタマイズする時に利用。 • Repositoryクラスで実行するSQLをカスタマイズすることができる。 • 参照 http://doc3n.ec-cube.net/customize_repository インターフェイス/クラス 概要 QueryCustomizer QueryBuilderを自由に変更 OrderByCustomizer ソート順を変更する WhereCustomizer 検索条件を追加する JoinCustomizer 結合するテーブルを追加する class AdminProductListCustomizer extends OrderByCustomizer { /** * 常に商品IDでソートする。 */ protected function createStatements($params, $queryKey) { return [new OrderByClause('p.id')]; }
  • 8. Copyright © LOCKON CO.,LTD.All Rights Reserved. 本体カスタマイズ機構 8 FormType カスタマイズ • フォームの項目を入力必須にするなどのカスタマイズ時に利用。 • 既存のFormTypeを置き換えたり、オプションを変更できる。 • SymfonyのFormExtensionの仕組みを利用している。 • 参照 http://doc3n.ec-cube.net/customize_formtype class CompanyNameRequiredExtension extends AbstractTypeExtension { public function buildForm(FormBuilderInterface $builder, array $options) { $options = $builder->get('company_name')->getOptions(); $options['required'] = true; // 入力必須にする $options['constraints'] = [ new NotBlank() ]; // 空の入力NGのアサーション追加 $options['attr']['placeholder'] = ‘会社名’; // プレースホルダー追加 $builder->add('company_name', TextType::class, $options); }
  • 9. Copyright © LOCKON CO.,LTD.All Rights Reserved. 本体カスタマイズ機構 9 Entity カスタマイズ (EC-CUBE独自) • 商品や会員情報に項目を追加したいときに利用。 • traitの仕組みを使うことで、既存のテーブルにフィールドを追加できる。 • 拡張したフィールドは、既存のフィールドと同じようにアクセス可能。 • 参照 http://doc3n.ec-cube.net/customize_entity /** * @EntityExtension("Eccube¥Entity¥Product") */ trait ProductTrait { /** * @ORM¥Column(type="string", nullable=true) */ public $maker_name; # Proxy クラスを生成 bin/console eccube:generate:proxies # 実行する SQL を確認 bin/console doctrine:schema:update --dump-sql # SQL を実行 bin/console doctrine:schema:update --dump-sql --force
  • 10. Copyright © LOCKON CO.,LTD.All Rights Reserved. 本体カスタマイズ機構 10 Service カスタマイズ (EC-CUBE独自) 購入フローまわりのカスタマイズの難易度を下げる仕組み。 参照 http://doc3n.ec-cube.net/customize_service ▼カート(Cart) • 同じ商品・同じ商品規格でも別々の明細に分割する(CartItemComparator) – ギフトラッピングなどの商品オプションを追加するカスタマイズ • 支払方法が異なる商品を同時にカートに入れられるようにする(CartItemAllocator) – 予約商品など、 同時にカートに投入したいが、別々に決済したい(注文を分けたい) といったカスタマイズ ▼購入フロー(PurchaseFlow) • 送料計算のカスタマイズなどで利用可能 • 本体でもポイント機能の実装で利用している • 3.nではフロント/管理画面で共通化
  • 11. Copyright © LOCKON CO.,LTD.All Rights Reserved. 本体カスタマイズ機構 11 Symfonyの機能を使った拡張 SymfonyやDoctrineが提供している拡張機構を利用可能。 参照 http://doc3n.ec-cube.net/customize_symfony • Symfony Event • Command • Doctrine Event
  • 12. Copyright © LOCKON CO.,LTD.All Rights Reserved. EC-CUBE 3.n 開発ドキュメント
  • 13. Copyright © LOCKON CO.,LTD.All Rights Reserved. EC-CUBE 3.n 開発ドキュメント 13 • EC-CUBE 3.n をカスタマイズして利用される方向けのドキュメントを整備中。 http://doc3n.ec-cube.net/