SlideShare a Scribd company logo
1 of 50
Download to read offline
Veriteworks Inc. 西 宏和
Magento Cafe Plus Kansai #1
Agenda
• Magentoカスタマイズ入門(概論)
• Magentoカスタマイズ入門(デザインテーマ)
Magentoカスタマイズ入門(概論)
このセッションの内容
• Magentoのディレクトリ構造
• コードプールとinclude_path
• デザインフォールバック
• 1.9以降の仕様変更
Magentoのディレクトリ構造
Magentoのディレクトリ構造
app code core コアコード
community コミュニティコード
local ローカルコード
design frontend 公開側テンプレート等
adminhtml 管理側テンプレート等
etc 設定ファイル
locale ロケールファイル
lib 共通ライブラリ
js 共通javascriptファイル
skin frontend 公開側スキン
adminhtml 管理側スキン
コード部分だけ拡大
app code community … … … コミュニティコード
core Mage Catalog Block ブロッククラスディレクトリ
Helper ヘルパークラスディレクトリ
Model モデルクラスディレクトリ
controllers リクエスト受け付け用コントローラ
Controller 基底クラスコントローラ
etc 定義ファイル一式
sql セットアップスクリプト
data データ定義スクリプト
local … … … ローカルコード
テンプレートだけ拡大
app design frontend default default layout レイアウトXML
locale テーマ固有ロケール
etc 設定ファイル
template テンプレートファイル
foo bar … 以下略
adminhtml default default … 管理画面側
コードプールとinclude_path
コードプール
app code core コアコード
community コミュニティコード
local ローカルコード
lib 共通ライブラリ
コードプールとは
• Magentoのコアコードとサードパーティ製コード、サイト独自のコードを分
離するための仕組み
• Composerが市民権を得る前のアーキテクチャゆえの構造
include_path
コンパイラ有効時の処理
通常の処理
対象外
• エクステンションの設定ファイルは
include_pathの対象外
• どのコードプールを見るかは、app/
etc/modulesの中にあるXMLで

定義されている
• Mage_Core_Model_Config::get
ModuleDirを参照
デザインフォールバック
デザインフォールバック
• 現在のテーマに存在しないファイ
ルを、親テーマに って使用する
仕組み
• テンプレート・レイアウトXML・
スキンで利用可能
mytheme/mytheme
mytheme/default
base/default
1.9系のデフォルト設定では・・・
標準テーマはrwdに変更
その他の設定は空欄だが、
rwd/defaultを使い、
ないものはbase/defaultを
自動的に使用する
1.9以降の変更点
• theme.xmlの導入
• フォールバック機構の仕様変更
theme.xmlによる親テーマ・子テーマ
• テーマディレクトリ下のetcに配置
する
• theme.xmlを記述することで、任意
のテーマを親テーマとして指定可能
<?xml version="1.0"?>
<theme>
<parent>rwd/default</parent>
</theme>
フォールバック機構の仕様変更
• 1.8までは、
• 現在テーマ → 現在テーマのデフォルト → base/default
• 1.9からは、
• 現在テーマ → 親テーマ or デフォルト → base/default
Varien_Object
• ArrayObjectを拡張したMagentoでよく使われるオブジェクト
• getXxx, setXxx等が既に実装されているので、データ入れとしてよく使われ
ている
• BlockやHelper、Modelはこのクラスを継承して実装されている
Magentoカスタマイズ入門

(デザインテーマ)
このセッションの内容
• レイアウトXMLの仕様と構造
• テンプレートの書き方と親子関係
• ブロックのあれこれ
• ウィジェット
• カスタマイズ例
レイアウトXMLの仕様と構造
レイアウトXML
• Magento独自の画面レイアウト定義用XMLファイル
• これを知らなくちゃデザインカスタマイズは始まらない
• 定義単位はエクステンション単位
• 1ファイルに複数画面の定義を記述可能
• メールテンプレートの一部パーツもレイアウトXMLで定義されている
local.xml
• すべてのレイアウトXMLの中で、一番最後に処理されるファイル
• テーマ固有のカスタマイズを書くために使用する
• 既成テーマをカスタマイズする際に、独自カスタム内容を分けるために使う
• ただし、幾つかできないことがあるので注意
レイアウトXMLの仕様
レイアウトXMLで使用するタグ
• block
• reference
• action
• update
• remove
• label
• actionのパラメータタグ
block
• レイアウト上にブロックを追加
• typeまたはclass属性でブロッククラスを指定
• name属性でレイアウト上のブロック名を指定(重複しないように)
• as属性でnameの別名を設定可能
• before / after 属性で追加位置を調整可能
• ネスト可
Blockの派生系(一部)
用途 子要素の自動表示 テンプレート
Mage_Core_Block_Template 一般的なテンプレート用 ☓ 必要
Mage_Core_Block_Text_List 子要素のリスト表示用 ⃝ 不要
Mage_Core_Block_Text_Tag タグ生成用 ☓ 不要
Mage_Core_Block_Text_Link リンクリスト生成用 (ログインナビとか) ☓ 不要
Mage_Core_Block_Text テキスト表示用 ☓ 不要
Mage_Core_Block_Abstract 基底ブロック ☓ 任意
reference
• 既にそのレイアウトで定義されているblockを参照する
• nameでブロック名を指定
• action、blockを記述可
update
• 既に定義してあるレイアウトを読み込む
• 読み込んだ後でreferenceを使って追加・変更が可能
• handle属性にレイアウト定義名を指定する
remove
• 既に定義されているブロックをレイアウト上から削除する
• name属性にブロック名を指定する
• 削除後、同名で再定義も可能
action
• ブロックのクラスに定義されているpublicメソッドを実行する
• 子要素にパラメータを指定可能
• ifconfig属性を使うことで、実行の制御が可能
• blockの違いを知る
レイアウトXMLの構造
基本的な構造
<?xml version="1.0"?>

<layout version="0.1.0">

<default>

<reference name="footer">

<block type="cms/block" name="cms_footer_links" before="footer_links">

<action method="setBlockId"><block_id>footer_links</block_id></action>

</block>

</reference>

</default>



<cms_page translate="label">

<label>CMS Pages (All)</label>

<reference name="content">

<block type="core/template" name="page_content_heading" template="cms/content_heading.phtml"/>

<block type="page/html_wrapper" name="cms.wrapper" translate="label">

<label>CMS Content Wrapper</label>

<action method="setElementClass"><value>std</value></action>

<block type="cms/page" name="cms_page"/>

</block>

</reference>

</cms_page>
</layout>
例 - 商品ページ
<block type="core/template_facade" name="product.info.container1" as="container1">

<action method=“setDataByKey">
<key>alias_in_layout</key>
<value>container1</value>
</action>

<action method=“setDataByKeyFromRegistry">
<key>options_container</key>
<key_in_registry>product</key_in_registry>
</action>

<action method="append"><block>product.info.options.wrapper</block></action>

<action method="append"><block>product.info.options.wrapper.bottom</block></action>

</block>

<block type="core/template_facade" name="product.info.container2" as="container2">

<action method=“setDataByKey">
<key>alias_in_layout</key>
<value>container2</value>
</action>

<action method=“setDataByKeyFromRegistry">
<key>options_container</key>
<key_in_registry>product</key_in_registry>
</action>

<action method="append"><block>product.info.options.wrapper</block></action>

<action method="append"><block>product.info.options.wrapper.bottom</block></action>

</block>
例 - メールテンプレート
<sales_email_order_items>

<block type="sales/order_email_items" name="items" template="email/order/items.phtml">

<action method=“addItemRender">
<type>default</type>
<block>sales/order_email_items_order_default</block>
<template>email/order/items/order/default.phtml</template>
</action>

<action method=“addItemRender">
<type>grouped</type>
<block>sales/order_email_items_order_grouped</block>
<template>email/order/items/order/default.phtml</template>
</action>

<block type="sales/order_totals" name="order_totals" template="sales/order/totals.phtml">

<action method=“setLabelProperties">
<value>colspan="3" align="right" style="padding:3px 9px”</value>
</action>

<action method=“setValueProperties">
<value>align="right" style="padding:3px 9px”</value>
</action>

<block type="tax/sales_order_tax" name="tax" template="tax/order/tax.phtml">

<action method="setIsPlaneMode"><value>1</value></action>

</block>

</block>

</block>

<block type="core/text_list" name="additional.product.info" />

</sales_email_order_items>
テンプレートの書き方と
親子関係
Magentoのテンプレート
• ただのPHPスクリプト
• あらゆるPHP関数・構文が利用可能
• ゴリゴリ計算式を書いてもいいが・・・それが良い実装かどうかは別問題
テンプレートの例
<?php if (($_products = $this->getProductCollection()) && $_products->getSize()): ?>

<h2 class="subtitle"><?php echo $this->__('New Products') ?></h2>

<?php $_columnCount = $this->getColumnCount(); ?>

<?php $i=0; foreach ($_products->getItems() as $_product): ?>

<?php if ($i++%$_columnCount==0): ?>

<ul class="products-grid">

<?php endif ?>

<li class="item<?php if(($i-1)%$_columnCount==0): ?> first<?php elseif($i%$_columnCount==0): ?> last<?php endif; ?>">

<a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->escapeHtml($_product->getName()) ?>" class="product-
image"><img src="<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(135) ?>" width="135" height="135" alt="<?php echo
$this->escapeHtml($_product->getName()) ?>" /></a>

<h3 class="product-name"><a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->escapeHtml($_product->getName()) ?
>"><?php echo $this->escapeHtml($_product->getName()) ?></a></h3>

<?php echo $this->getReviewsSummaryHtml($_product, 'short') ?>

<?php echo $this->getPriceHtml($_product, true, '-new') ?>

<div class="actions">

<?php if($_product->isSaleable()): ?>

<button type="button" title="<?php echo $this->__('Add to Cart') ?>" class="button btn-cart" onclick="setLocation('<?php echo
$this->getAddToCartUrl($_product) ?>')"><span><span><?php echo $this->__('Add to Cart') ?></span></span></button>

<?php else: ?>

<p class="availability out-of-stock"><span><?php echo $this->__('Out of stock') ?></span></p>

<?php endif; ?>

<ul class="add-to-links">

<?php if ($this->helper('wishlist')->isAllow()) : ?>

<li><a href="<?php echo $this->getAddToWishlistUrl($_product) ?>" class="link-wishlist"><?php echo $this->__('Add to
Wishlist') ?></a></li>

<?php endif; ?>

<?php if ($_compareUrl = $this->getAddToCompareUrl($_product)): ?>

<li><span class="separator">|</span> <a href="<?php echo $_compareUrl ?>" class="link-compare"><?php echo $this->__('Add to
Compare') ?></a></li>

<?php endif; ?>

</ul>

</div>

</li>

<?php if ($i%$_columnCount==0 || $i==count($_products)): ?>

</ul>

<?php endif ?>

<?php endforeach; ?>

<?php endif; ?>
テンプレートの親子関係
• レイアウトXML上の定義に沿って、テンプレートの親子関係も決まってくる
• どちらかと言うとブロックの階層関係と同じ
• 上位階層のテンプレートから下位階層のブロックを呼ぶ場合は、
getChildHtml()などを使用する
ウィジェット
CMSと静的ブロック上のウィジェット
CMSと静的ブロック上のウィジェット
• あらかじめ定義されたパーツをCMSや静的ブロック上に埋め込む機能
• パーツは独自エクステンションを書くことで新しく追加することが可能
デザインテーマ上のウィジェット
• ある特定のテーマ上に、CMSと同様にパーツを配置する機能
• テーマ依存なので、同じテーマを使うストアビューに等しく適用される
• ウィジェットによって配置できる場所が決まっている
カスタマイズ例
CSSやJSの追加
page/html_headブロックの子要素で以下のような記述をすればOK
<action method=“addJs"><script>mage/cookies.js</script></action>
<action method=“addCss"><stylesheet>css/styles.css</stylesheet></action>
<action method=“addItem"><type>skin_js</type><name>js/lib/jquery-1.10.2.min.js</name></action>
<action method="addItem"><type>skin_css</type><name>css/styles-ie8.css</name><params/><if><![CDATA[ (lte IE 8) & (!
IEMobile)]]></if></action>
<action method="addLinkRel"><rel>stylesheet</rel><href>//fonts.googleapis.com/css?family=Raleway:300,400,500,700,600</
href></action>
静的ブロックの埋め込み
<reference name="foo">
<block type="cms/block" name= my_custom_block >
<action method= setBlockId">
<block_id>my_custom_block</block_id>
</action>
<action method= setCacheLifetime">
<cache_lifetime>86400</cache_lifetime>
</action>
<action method= setCacheKey">
<cache_key>header_slogan_block</cache_key>
</action>
</block>
</reference>
レイアウトXMLを使わずにいきなりブロックを配置
$block = $this->getLayout()->createBlock( ext_name/block_name );
echo $block->toHtml();
おわり

More Related Content

What's hot

Jqm20120210
Jqm20120210Jqm20120210
Jqm20120210
cmtomoda
 
Word press34
Word press34Word press34
Word press34
BREN
 

What's hot (20)

jQuery Mobile 1.2 最新情報 & Tips
jQuery Mobile 1.2 最新情報 & TipsjQuery Mobile 1.2 最新情報 & Tips
jQuery Mobile 1.2 最新情報 & Tips
 
eZ Publish勉強会9月〜テンプレート言語〜
eZ Publish勉強会9月〜テンプレート言語〜eZ Publish勉強会9月〜テンプレート言語〜
eZ Publish勉強会9月〜テンプレート言語〜
 
eZ Publish 2012年8月勉強会 - テンプレートオーバーライド
eZ Publish 2012年8月勉強会 - テンプレートオーバーライドeZ Publish 2012年8月勉強会 - テンプレートオーバーライド
eZ Publish 2012年8月勉強会 - テンプレートオーバーライド
 
Jqm20120210
Jqm20120210Jqm20120210
Jqm20120210
 
XPagesDay2015 - 誰も教えてくれなかったデバッグ方法
XPagesDay2015 - 誰も教えてくれなかったデバッグ方法XPagesDay2015 - 誰も教えてくれなかったデバッグ方法
XPagesDay2015 - 誰も教えてくれなかったデバッグ方法
 
jQuery Mobile 最新情報 & Tips
jQuery Mobile 最新情報 & TipsjQuery Mobile 最新情報 & Tips
jQuery Mobile 最新情報 & Tips
 
Mixer2 で作るカスタムテンプレートエンジン #渋谷java
Mixer2 で作るカスタムテンプレートエンジン #渋谷javaMixer2 で作るカスタムテンプレートエンジン #渋谷java
Mixer2 で作るカスタムテンプレートエンジン #渋谷java
 
What's New in MySQL 5.7 Optimizer @MySQL User Conference Tokyo 2015
What's New in MySQL 5.7 Optimizer @MySQL User Conference Tokyo 2015What's New in MySQL 5.7 Optimizer @MySQL User Conference Tokyo 2015
What's New in MySQL 5.7 Optimizer @MySQL User Conference Tokyo 2015
 
Magento meet up Tokyo#1 for Design
Magento meet up Tokyo#1 for DesignMagento meet up Tokyo#1 for Design
Magento meet up Tokyo#1 for Design
 
Windows ストアアプリのgrid viewを入門してみた
Windows ストアアプリのgrid viewを入門してみたWindows ストアアプリのgrid viewを入門してみた
Windows ストアアプリのgrid viewを入門してみた
 
EC-CUBEプラグイン講義
EC-CUBEプラグイン講義EC-CUBEプラグイン講義
EC-CUBEプラグイン講義
 
Pyramid入門
Pyramid入門Pyramid入門
Pyramid入門
 
初めてのMT plugin
初めてのMT plugin初めてのMT plugin
初めてのMT plugin
 
20141206 handson
20141206 handson20141206 handson
20141206 handson
 
Django 1.5 における効果的な MTV 設計 & ネイティブApp
Django 1.5 における効果的な MTV 設計 & ネイティブAppDjango 1.5 における効果的な MTV 設計 & ネイティブApp
Django 1.5 における効果的な MTV 設計 & ネイティブApp
 
CSS Nite in Matsuyama vol.1 - session 4
CSS Nite in Matsuyama vol.1 - session 4 CSS Nite in Matsuyama vol.1 - session 4
CSS Nite in Matsuyama vol.1 - session 4
 
コードビュー中心で開発するDreamweaverテンプレート
コードビュー中心で開発するDreamweaverテンプレートコードビュー中心で開発するDreamweaverテンプレート
コードビュー中心で開発するDreamweaverテンプレート
 
「こんなサイトをこんなテーマ構成で作ってみました」Basercms 勉強会vol6
「こんなサイトをこんなテーマ構成で作ってみました」Basercms 勉強会vol6 「こんなサイトをこんなテーマ構成で作ってみました」Basercms 勉強会vol6
「こんなサイトをこんなテーマ構成で作ってみました」Basercms 勉強会vol6
 
愛と涙のWordPress無理やりカスタマイズ事例集
愛と涙のWordPress無理やりカスタマイズ事例集愛と涙のWordPress無理やりカスタマイズ事例集
愛と涙のWordPress無理やりカスタマイズ事例集
 
Word press34
Word press34Word press34
Word press34
 

Similar to 第1回 Magento Cafe Plus Kansai ~ Magentoカスタマイズ入門

20091030cakephphandson 01
20091030cakephphandson 0120091030cakephphandson 01
20091030cakephphandson 01
Yusuke Ando
 
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsugSpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
Y Watanabe
 
エンタープライズ分野での実践AngularJS
エンタープライズ分野での実践AngularJSエンタープライズ分野での実践AngularJS
エンタープライズ分野での実践AngularJS
Ayumi Goto
 
アプリコンテスト
アプリコンテストアプリコンテスト
アプリコンテスト
Tomonori Yamada
 
PHPフレームワーク入門
PHPフレームワーク入門PHPフレームワーク入門
PHPフレームワーク入門
Sho A
 
【18-C-4】Google App Engine - 無限の彼方へ
【18-C-4】Google App Engine - 無限の彼方へ【18-C-4】Google App Engine - 無限の彼方へ
【18-C-4】Google App Engine - 無限の彼方へ
Developers Summit
 

Similar to 第1回 Magento Cafe Plus Kansai ~ Magentoカスタマイズ入門 (20)

scala+liftで遊ぼう
scala+liftで遊ぼうscala+liftで遊ぼう
scala+liftで遊ぼう
 
20091030cakephphandson 01
20091030cakephphandson 0120091030cakephphandson 01
20091030cakephphandson 01
 
PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!
 
ASP.NET MVC 2 ~新機能の紹介~
ASP.NET MVC 2 ~新機能の紹介~ASP.NET MVC 2 ~新機能の紹介~
ASP.NET MVC 2 ~新機能の紹介~
 
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
 
Windows PowerShell 2.0 の基礎知識
Windows PowerShell 2.0 の基礎知識Windows PowerShell 2.0 の基礎知識
Windows PowerShell 2.0 の基礎知識
 
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsugSpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
 
エンタープライズ分野での実践AngularJS
エンタープライズ分野での実践AngularJSエンタープライズ分野での実践AngularJS
エンタープライズ分野での実践AngularJS
 
アプリコンテスト
アプリコンテストアプリコンテスト
アプリコンテスト
 
ASP.NET MVC と jQuery で実践する標準志向 Web 開発
ASP.NET MVC と jQuery で実践する標準志向 Web 開発ASP.NET MVC と jQuery で実践する標準志向 Web 開発
ASP.NET MVC と jQuery で実践する標準志向 Web 開発
 
CodeIgniter入門
CodeIgniter入門CodeIgniter入門
CodeIgniter入門
 
企業におけるSpring@日本springユーザー会20090624
企業におけるSpring@日本springユーザー会20090624企業におけるSpring@日本springユーザー会20090624
企業におけるSpring@日本springユーザー会20090624
 
PHPフレームワーク入門
PHPフレームワーク入門PHPフレームワーク入門
PHPフレームワーク入門
 
MTDDC Meetup TOKYO 2015 bit-part
MTDDC Meetup TOKYO 2015 bit-partMTDDC Meetup TOKYO 2015 bit-part
MTDDC Meetup TOKYO 2015 bit-part
 
Ruby on Rails Tutorial
Ruby on Rails TutorialRuby on Rails Tutorial
Ruby on Rails Tutorial
 
【18-C-4】Google App Engine - 無限の彼方へ
【18-C-4】Google App Engine - 無限の彼方へ【18-C-4】Google App Engine - 無限の彼方へ
【18-C-4】Google App Engine - 無限の彼方へ
 
20141119 Movable Type HandsOn Seminar
20141119 Movable Type HandsOn Seminar20141119 Movable Type HandsOn Seminar
20141119 Movable Type HandsOn Seminar
 
XPagesDay2014 A-4 XPages with jQueryMobile BADプラクティスガイド
XPagesDay2014 A-4 XPages with jQueryMobile BADプラクティスガイドXPagesDay2014 A-4 XPages with jQueryMobile BADプラクティスガイド
XPagesDay2014 A-4 XPages with jQueryMobile BADプラクティスガイド
 
Geeklog2.1新機能紹介 20140723
Geeklog2.1新機能紹介 20140723Geeklog2.1新機能紹介 20140723
Geeklog2.1新機能紹介 20140723
 
20141101 handson
20141101 handson20141101 handson
20141101 handson
 

More from Hirokazu Nishi

Magento cafe tokyo2~デザイナー向けMagentoの歩き方
Magento cafe tokyo2~デザイナー向けMagentoの歩き方Magento cafe tokyo2~デザイナー向けMagentoの歩き方
Magento cafe tokyo2~デザイナー向けMagentoの歩き方
Hirokazu Nishi
 
最新・Magentoを日本語で使うイロハ
最新・Magentoを日本語で使うイロハ最新・Magentoを日本語で使うイロハ
最新・Magentoを日本語で使うイロハ
Hirokazu Nishi
 
加速していくMagento 〜MDP2011参加レポート〜
加速していくMagento 〜MDP2011参加レポート〜加速していくMagento 〜MDP2011参加レポート〜
加速していくMagento 〜MDP2011参加レポート〜
Hirokazu Nishi
 

More from Hirokazu Nishi (18)

Magento Meetup Tokyo 14 〜メンテナンス画面を極める
Magento Meetup Tokyo 14 〜メンテナンス画面を極めるMagento Meetup Tokyo 14 〜メンテナンス画面を極める
Magento Meetup Tokyo 14 〜メンテナンス画面を極める
 
JP_Stripes Vol3 発表資料
JP_Stripes Vol3 発表資料JP_Stripes Vol3 発表資料
JP_Stripes Vol3 発表資料
 
20170626 さくらインターネット Stripe Magento
20170626 さくらインターネット Stripe Magento20170626 さくらインターネット Stripe Magento
20170626 さくらインターネット Stripe Magento
 
How to implement payment gateway integration for non-credit card on Magento2
How to implement payment gateway integration for non-credit card on Magento2How to implement payment gateway integration for non-credit card on Magento2
How to implement payment gateway integration for non-credit card on Magento2
 
第9回 Magento Cafe Plus
第9回 Magento Cafe Plus第9回 Magento Cafe Plus
第9回 Magento Cafe Plus
 
第8回 Magento cafe plus
第8回 Magento cafe plus第8回 Magento cafe plus
第8回 Magento cafe plus
 
第7回 Magento Cafe Plus
第7回 Magento Cafe Plus第7回 Magento Cafe Plus
第7回 Magento Cafe Plus
 
Magento Cafe Plus #6
Magento Cafe Plus #6Magento Cafe Plus #6
Magento Cafe Plus #6
 
第4回Magento Cafe Plus〜最近のMagento
第4回Magento Cafe Plus〜最近のMagento第4回Magento Cafe Plus〜最近のMagento
第4回Magento Cafe Plus〜最近のMagento
 
Akeneo PIM Overview
Akeneo PIM OverviewAkeneo PIM Overview
Akeneo PIM Overview
 
Magento2 Overview
Magento2 OverviewMagento2 Overview
Magento2 Overview
 
Magento cafe tokyo2~デザイナー向けMagentoの歩き方
Magento cafe tokyo2~デザイナー向けMagentoの歩き方Magento cafe tokyo2~デザイナー向けMagentoの歩き方
Magento cafe tokyo2~デザイナー向けMagentoの歩き方
 
最新・Magentoを日本語で使うイロハ
最新・Magentoを日本語で使うイロハ最新・Magentoを日本語で使うイロハ
最新・Magentoを日本語で使うイロハ
 
加速していくMagento 〜MDP2011参加レポート〜
加速していくMagento 〜MDP2011参加レポート〜加速していくMagento 〜MDP2011参加レポート〜
加速していくMagento 〜MDP2011参加レポート〜
 
Magento20100807
Magento20100807Magento20100807
Magento20100807
 
Magento20100709
Magento20100709Magento20100709
Magento20100709
 
Magento20100313
Magento20100313Magento20100313
Magento20100313
 
Magento20100226
Magento20100226Magento20100226
Magento20100226
 

第1回 Magento Cafe Plus Kansai ~ Magentoカスタマイズ入門