37
Veriteworks Inc. 西 宏和 Magento Cafe Plus #8

第8回 Magento cafe plus

Embed Size (px)

Citation preview

Veriteworks Inc. 西 宏和

Magento Cafe Plus #8

Agenda

• 最近のMagento & Imagine Conference

• Magento2 エクステンションの作り方(その1)

• Magento1 ウィジェットの作り方

最近のMagento

Imagine Conference

Magento2

• やはりリリーススケジュールは変更なし(2015 4Q予定)

• 開発者向けBetaがほぼ毎週リリース

• ドキュメントやサンプルも鋭意更新中

Meet Magento 2015 Japan

• チケット販売開始(6末まではなんと6,000円!)

• Magento Inc.とOro Inc.から来日予定

• Meet Magento Associationほかからも来日予定

Magento1.x

• CE 1.9.1.1リリース(SUPEE-5344対応)

• CE 1.9.2.0近日リリース予定

Magento2 エクステンションの作り方(その1)

大前提としての知識

要求システム構成の違いMagento1.x Magento2

WebサーバーApache 2.2 / 2.4

NginxIIS

Apache 2.2 / 2.4Nginx

PHP 5.3.11以上 5.5.x / 5.6.x HHVM 3.6.x

MySQL 5.1以上 5.6.x

その他 php intl, PHPUnit 4.1.x, composer

Magento1とMagento2のディレクトリ構成の違い

• Magento1(M1)とMagento2(M2)ではディレクトリ構成が異なる

• エクステンションを構成するディレクトリ構成も異なる

M1のディレクトリ構成app code core コアコード

community コミュニティコード

local ローカルコード

design frontend 公開側テンプレート等

adminhtml 管理側テンプレート等

etc 設定ファイル

locale ロケールファイル

lib 共通ライブラリ

js 共通javascriptファイル

skin frontend 公開側スキン

adminhtml 管理側スキン

M2のディレクトリ構成app code Magento Magentoコアのコード

Foo サードパーティエクステンション

design frontend フロントエンドカスタムテーマ

adminhtml バックエンドカスタムテーマ

etc 設定ファイルなど

i18n ロケール定義

bin magentoコマンド

dev ユーティリティとテスト

lib バンドルライブラリ類

pub 新ドキュメントルート

setup インストーラー

var 一時ファイル置き場

vendor composerライブラリ

M2のエクステンションディレクトリ1階層目 2階層目 3階層目 4階層目 5階層目

app code Foo Example Api

Block

Controller

etc

Helper

i18n

Model

Observer

Service

Plugin

Pricing

Setup

Test

view

composer.json

M2で廃止になったもの

• コードプール

• Mageオブジェクト

• local.xml

• mageコマンド

• Varienライブラリ一式

M2で新たに増えた要素(一部)• composer

• Magentoフレームワーク

• PSR

• ネームスペース

• コード自動生成

• 新しいXML定義

• ユニットテスト

コード自動生成

• 各種クラスの定義とコードを自動生成

• 生成したコードはvar/generation以下に配置

• XML定義と連動

新しいXML定義(例)• di.xml

• crontab.xml

• email_templates.xml

• events.xml

• fieldset.xml

• module.xml

• validation.xml

結論:M2はM1とかなり違う

ただし、M1の知識が役に立たないわけではない

M2でも変わらない概念

• レイアウトXML(の存在)

• フォールバック機構

• ロケールCSV

で、本題

何はともあれ、公式サンプルを見る

https://github.com/magento/magento2-samples

M2エクステンションで最低限必要なもの

• composer.json

• etcディレクトリとmodule.xml

ここからはコードを見ながら

Magento1 ウィジェットの作り方

そもそもウィジェットって・・・

CMSページと静的ブロック上に埋め込むパーツとしてのウィジェット

デザインテーマ上に埋め込むパーツとしてのウィジェット

CMSと静的ブロック上のウィジェット

CMSと静的ブロック上のウィジェット

• あらかじめ定義されたパーツをCMSや静的ブロック上に埋め込む機能

• パーツは独自エクステンションを書くことで新しく追加することが可能

ウィジェットを構成する要素

• app/code/<code pool>/ベンダー名/エクステンション名/etc/widget.xml

• widget.xmlが指定するテンプレート・ブロック等

widget.xml

• ウィジェット選択のウインドウを定義するXML

• widgetをルート要素とするツリーを書く

• Mage/CmsやMage/Catalogにサンプルがあるので参考にすると楽

ウィジェットに使うブロック

• ウィジェットに使うブロックは必ず、Mage_Widget_Block_Interfaceを実装する

• といっても、必要なメソッドは大抵既に実装されているので、宣言するだけでOK

デザインテーマ上のウィジェット

• ある特定のテーマ上に、CMSと同様にパーツを配置する機能

• テーマ依存なので、同じテーマを使うストアビューに等しく適用される

• ウィジェットによって配置できる場所が決まっている

ウィジェットを構成する要素

• エクステンションごとのwidget.xml(CMS用と基本同じ)

• テーマのwidget.xml

テーマのwidget.xml

• 各テーマに1個だけ存在するファイル。

• なければ親テーマ・base/defaultに戻って適用

widget.xmlの役割

• テーマ固有の表示位置(ヘッダ・フッタ・左・右 など)

• テーマ別に利用できるテンプレートの候補

• 要はエクステンション側の定義のオーバーライド

おわり