Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Upcoming SlideShare
What to Upload to SlideShare
What to Upload to SlideShare
Loading in …3
×
1 of 13

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

1

Share

Download to read offline

2018年3月開催のEC-CUBE次期バージョン開発進捗説明会のスライドです。

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all

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

  1. 1. Copyright © LOCKON CO.,LTD.All Rights Reserved. カスタマイズ
  2. 2. Copyright © LOCKON CO.,LTD.All Rights Reserved. 本体カスタマイズ機構
  3. 3. Copyright © LOCKON CO.,LTD.All Rights Reserved. 本体カスタマイズ機構 3 概要 EC-CUBEの挙動をデフォルトから変更したい • 拡張機構を利用した拡張 – カスタマイズディレクトリにPHPファイルを作成することで拡張できる • プラグインによる拡張 • EC-CUBE本体のソースコード(./src)を変更
  4. 4. Copyright © LOCKON CO.,LTD.All Rights Reserved. 本体カスタマイズ機構 4 カスタマイズディレクトリ カスタマイズディレクトリ このディレクトリ以下にファイルを置くと、 自動的に認識する。 (現状はAcmeという仮のディレクトリ名前)
  5. 5. Copyright © LOCKON CO.,LTD.All Rights Reserved. 本体カスタマイズ機構 5 概要 • Controller • Repository • FormType • Entity (*EC-CUBE独自) • Service (*EC-CUBE独自) • Symfonyの機能を使った拡張 ※詳細な内容は、開発ドキュメントサイトに記載
  6. 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. 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. 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. 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. 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. 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. 12. Copyright © LOCKON CO.,LTD.All Rights Reserved. EC-CUBE 3.n 開発ドキュメント
  13. 13. Copyright © LOCKON CO.,LTD.All Rights Reserved. EC-CUBE 3.n 開発ドキュメント 13 • EC-CUBE 3.n をカスタマイズして利用される方向けのドキュメントを整備中。 http://doc3n.ec-cube.net/

×