More Related Content
Similar to 第1回 Magento Cafe Plus Kansai ~ Magentoカスタマイズ入門 (20)
More from Hirokazu Nishi (18)
第1回 Magento Cafe Plus Kansai ~ Magentoカスタマイズ入門
- 6. Magentoのディレクトリ構造
app code core コアコード
community コミュニティコード
local ローカルコード
design frontend 公開側テンプレート等
adminhtml 管理側テンプレート等
etc 設定ファイル
locale ロケールファイル
lib 共通ライブラリ
js 共通javascriptファイル
skin frontend 公開側スキン
adminhtml 管理側スキン
- 7. コード部分だけ拡大
app code community … … … コミュニティコード
core Mage Catalog Block ブロッククラスディレクトリ
Helper ヘルパークラスディレクトリ
Model モデルクラスディレクトリ
controllers リクエスト受け付け用コントローラ
Controller 基底クラスコントローラ
etc 定義ファイル一式
sql セットアップスクリプト
data データ定義スクリプト
local … … … ローカルコード
- 8. テンプレートだけ拡大
app design frontend default default layout レイアウトXML
locale テーマ固有ロケール
etc 設定ファイル
template テンプレートファイル
foo bar … 以下略
adminhtml default default … 管理画面側
- 35. 基本的な構造
<?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>
- 36. 例 - 商品ページ
<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>
- 37. 例 - メールテンプレート
<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>
- 40. テンプレートの例
<?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; ?>
- 48. 静的ブロックの埋め込み
<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>