Magento Community Edition 1.8.1.0がでてから3ヶ月ほどたちました。
基本的に1.8.1.0は1.8.0.0のマイナーバージョンアップなので、大きな差は少ないのですが、1.7系とは

  • 税計算処理
  • パフォーマンスの改善

だけでなく、細かい点で違いがあります。
今回は特に、1.7系のテーマと1.8系のテーマで異なる点について、チェックアウト画面を取り上げて解説します。

似ているようで違う1.7以前と1.8以降

Magento Community Edition 1.8系は、1.7系までのバージョンアップと比べるとある意味「地味」なバージョンアップです。
新機能らしい新機能はなく、基本的に機能改善が主体となっているバージョンであることは間違いありません。

ですが細かいところを見ていくと、テンプレートやレイアウトXML周りに幾つか改修されたポイントがあります。
これらの変更点を見落としたままアップデートすると、トラブルになる可能性があるので注意したほうがよいでしょう。

特にチェックアウト画面(しかもワンページチェックアウト)はレイアウト定義がかなり変わっているので注意が必要です。 

チェックアウト画面の何が変わったのか

最初に app/design/base/default/layout/checkout.xml の1.7.0.2と1.8.1.0の差分を見てみましょう(1.8.0.0と1.8.1.0は内容として同じなので省略します)。

diff -u app/design/frontend/base/default/layout/checkout.xml ../magento1702/app/design/frontend/base/default/layout/checkout.xml
--- magento1810/app/design/frontend/base/default/layout/checkout.xml 2014-01-30 12:05:16.000000000 +0900
+++ magento1702/app/design/frontend/base/default/layout/checkout.xml 2014-01-30 12:03:05.000000000 +0900
@@ -21,7 +21,7 @@
*
* @category design
* @package base_default
- * @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
+ * @copyright Copyright (c) 2012 Magento Inc. (http://www.magentocommerce.com)
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/

@@ -310,12 +310,7 @@
<block type="page/html_wrapper" name="checkout.progress.wrapper" translate="label">
<label>Checkout Progress Wrapper</label>
<action method="setElementId"><value>checkout-progress-wrapper</value></action>
- <block type="checkout/onepage_progress" name="checkout.progress" before="-" template="checkout/onepage/progress.phtml">
- <block type="checkout/onepage_progress" name="billing.progress" template="checkout/onepage/progress/billing.phtml"></block>
- <block type="checkout/onepage_progress" name="shipping.progress" template="checkout/onepage/progress/shipping.phtml"></block>
- <block type="checkout/onepage_progress" name="shippingmethod.progress" template="checkout/onepage/progress/shipping_method.phtml"></block>
- <block type="checkout/onepage_progress" name="payment.progress" template="checkout/onepage/progress/payment.phtml"></block>
- </block>
+ <block type="checkout/onepage_progress" name="checkout.progress" before="-" template="checkout/onepage/progress.phtml"/>
</block>
</reference>
<reference name="content">
@@ -333,7 +328,7 @@
<block type="checkout/onepage_shipping_method_additional" name="checkout.onepage.shipping_method.additional" as="additional" template="checkout/onepage/shipping_method/additional.phtml"/>
</block>
<block type="checkout/onepage_payment" name="checkout.onepage.payment" as="payment" template="checkout/onepage/payment.phtml">
- <block type="checkout/onepage_payment_methods" name="checkout.payment.methods" as="methods" template="checkout/onepage/payment/info.phtml">
+ <block type="checkout/onepage_payment_methods" name="checkout.payment.methods" as="methods" template="checkout/onepage/payment/methods.phtml">
<action method="setMethodFormTemplate"><method>purchaseorder</method><template>payment/form/purchaseorder.phtml</template></action>
</block>
</block>
@@ -342,9 +337,9 @@
</reference>
</checkout_onepage_index>

- <!--
- One page checkout progress block
- -->
+<!--
+One page checkout progress block
+-->

<checkout_onepage_progress>
<!-- Mage_Checkout -->
@@ -352,65 +347,15 @@
<remove name="left"/>

<block type="checkout/onepage_progress" name="root" output="toHtml" template="checkout/onepage/progress.phtml">
- <action method="setInfoTemplate"><method></method><template></template></action>
- <block type="checkout/onepage_progress" name="billing.progress" template="checkout/onepage/progress/billing.phtml"></block>
- <block type="checkout/onepage_progress" name="shipping.progress" template="checkout/onepage/progress/shipping.phtml"></block>
- <block type="checkout/onepage_progress" name="shippingmethod.progress" template="checkout/onepage/progress/shipping_method.phtml"></block>
- <block type="checkout/onepage_progress" name="payment.progress" template="checkout/onepage/progress/payment.phtml"></block>
+ <block type="checkout/onepage_payment_info" name="payment_info">
+ <action method="setInfoTemplate"><method></method><template></template></action>
+ </block>
</block>
</checkout_onepage_progress>

- <!-- Individual blocks for Progress steps begins -->
- <checkout_onepage_progress_billing>
- <!-- Mage_Checkout -->
- <remove name="right"/>
- <remove name="left"/>
-
- <block type="checkout/onepage_progress" name="root" output="toHtml" template="checkout/onepage/progress/billing.phtml">
- <action method="setInfoTemplate"><method></method><template></template></action>
- </block>
- </checkout_onepage_progress_billing>
-
-
- <checkout_onepage_progress_shipping>
- <!-- Mage_Checkout -->
- <remove name="right"/>
- <remove name="left"/>
-
- <block type="checkout/onepage_progress" name="root" output="toHtml" template="checkout/onepage/progress/shipping.phtml">
- <action method="setInfoTemplate"><method></method><template></template></action>
- </block>
- </checkout_onepage_progress_shipping>
-
-
- <checkout_onepage_progress_shipping_method>
- <!-- Mage_Checkout -->
- <remove name="right"/>
- <remove name="left"/>
-
- <block type="checkout/onepage_progress" name="root" output="toHtml" template="checkout/onepage/progress/shipping_method.phtml">
- <action method="setInfoTemplate"><method></method><template></template></action>
- </block>
- </checkout_onepage_progress_shipping_method>
-
- <checkout_onepage_progress_payment>
- <!-- Mage_Checkout -->
- <remove name="right"/>
- <remove name="left"/>
-
- <block type="checkout/onepage_progress" name="root" output="toHtml" template="checkout/onepage/progress/payment.phtml">
- <block type="checkout/onepage_payment_info" name="payment_info">
- <action method="setInfoTemplate"><method></method><template></template></action>
- </block>
- <action method="setInfoTemplate"><method></method><template></template></action>
- </block>
- </checkout_onepage_progress_payment>
-
-<!-- end individual progress blocks -->
-
- <!--
- One page checkout payment methods block
- -->
+<!--
+One page checkout payment methods block
+-->
<checkout_onepage_paymentmethod>
<remove name="right"/>
<remove name="left"/>

長い内容ですが、大事な点は以下のとおりです。

  • checkout.progressの小ブロック定義が追加された
  • checkout/onepage/progressアクションの画面定義も変わっている
  • 各ステップの入力結果を表示するアクション定義の追加

この3点が1.8系で変わった点です。

ワンページチェックアウトで購入手続きを進めていく際に、右または左ナビゲーションとして表示される、進行状況を表示するブロックがあります。
1.8系ではその定義が変わった、ということなのです。

うっかり1.7系テーマを1.8以降で使うとどうなるか

1.7系用のテーマで、チェックアウト画面のテンプレートやレイアウトXMLに手を入れているものを1.8系で使用する場合は、そのまま使うとワンページチェックアウトの進行状況を表示するブロック(onepage.progressといいます)が何も出てこなくなってしまいます。

1.8系ではレイアウト定義の変更に合わせてJavascriptコードも変更を受けているので、うっかり1.7系のテーマを1.8以降で使うとシステムエラーこそでないものの、画面表示が正しくならないという現象が起きます。

Magento Community Edition 1.7系以前から1.8系へアップデートする際には、チェックアウト画面はもちろんのこと、運用するサイトで使用する画面すべてが正しく動作するかを事前に別環境を用意して検証する必要があります。

当然のことながら、1.7系のテーマを何もせず1.8系に適用すると、あちこちで不具合を起こします。サードパーティ製のテーマを使用する際は、1.8対応であるかどうかをきちんとチェックした上で使用してください。

まとめ

  • Magento Community Edition 1.7系と1.8系ではチェックアウト画面のレイアウト定義が一部異なる
  • checkout.progress関係の変更に伴い、1.7系のテーマをそのまま使うとブロックが正しく表示されなくなる
  • 1.8系に1.7系のテーマを使う場合は、すべての機能が正しく動くかチェックする必要がある
  • 1.8系対応と謳っているテーマであっても念のため動作検証をする必要がある