Magento CE-1.9ではフォールバック機構に改良が加えられています。
もちろん、1.8までのフォールバック機構も利用できますが、新たに実装された仕組みを知っておくと、テーマのカスタマイズ・開発がやりやすくなります。

フォールバックとは

フォールバックは、Magentoのテンプレートやスキンをカスタマイズする上で欠かせない要素です。1つのテーマはテンプレートとスキンから構成されますが、更に細かく見ていくと、

  • テンプレートファイル
  • レイアウトXML
  • ロケールCSV
  • 画像
  • CSS
  • JSファイル

といった要素から成り立っています。
これらは非常に多くのファイルから構成されているため、カスタムテーマを作成する際に、すべてのファイルに目を通すことは非常に大変な作業になります。

そこで、フォールバックの出番です。
フォールバックは、今使用しているテーマに存在しないファイルを自動的に親テーマから探して使用するという機能です。
つまり、フォールバックがあることによって、Magentoのテーマカスタマイズは、必要なファイルだけをカスタマイズすれば済むようになっているのです。

フォールバックの制約

良いことばかりのように思えるフォールバックですが、制約もあります。

1.8までのフォールバックは、今使用しているテーマを起点にして、最大2階層までしか利用できませんでした。
最大2階層、のうち1階層は、管理画面のデザイン設定で指定する標準テーマなので、「mytheme」というデザインパッケージで、「themeA」というテーマを利用しながら、標準テーマを「default」とした場合は、以下のような流れでフォールバックが動作します。

mytheme/themeA -> mytheme/default -> base/default

このように今使用しているテーマを起点にして、最終的にはbase/defaultという、すべての基本になるテーマが適用される構造になっています。
このため、何かのテーマをベースにカスタマイズする際は、元々のテーマをまるごとコピーしてカスタマイズするなどしなければなりませんでした。

1.9でのフォールバック

1.9でのフォールバックは、「theme.xml」という新たな設定ファイルを用いることで、テーマに対する親テーマを任意に指定できるようになりました。
この仕組みは、本来Magento2で導入される予定だったものなのですが、Magento1.xにも反映されたようです。

theme.xmlとは

theme.xmlは、「app/design/frontend/パッケージ名/テーマ名/etc/」 に配置される、テーマ専用の設定ファイルです。
以下のように記述すると、そのテーマの親テーマを明示的に指定することができます。
このファイルがそもそも存在しない場合は、1.8までと同じ動きをします。


    default/default

theme.xmlでテーマ固有のレイアウト定義を定義する

theme.xmlは、単に親テーマを指定するだけではありません。
そのテーマ固有の定義を記述したレイアウトXMLを指定することができます。
定義したい場合は、以下のように記述します。


    default/default
    
        
            
                mytheme.xml
            
        
    

mytheme_update.xmlは普通のレイアウトXMLなので、ごく普通に定義すればOKです。
ただし、この定義はフォールバック対象外です。そのテーマ限定のものなので、他のテーマに影響することはありません。

このようにMagento CE-1.9ではフォールバック機構に改良が加えられ、親テーマ・子テーマという概念が導入されています。
うまく使いこなして、カスタマイズ作業の効率をアップさせたいものです。