問題
Magento のデザイン フォール バック階層の制限に遭遇しました。それが機能する方法は、最も具体的な場所から最も具体的でない場所へと逆方向に検索することです。
... カスタム テーマが「styles.css」という CSS ファイルを呼び出しても、Magento アプリケーションがカスタム テーマでファイルを見つけられない場合、Magento は階層内の次のテーマに移動してファイルを見つけます ... 「styles.css」というファイルが見つかるまで、テーマの階層を下って作業を続けます。</p>
設計を構築するこの方法は、要求されたファイルを取得してロードするために、アプリケーションが要求されたファイルの次の可能なソースに「フォールバック」するため、フォールバックと呼ばれます。
これが意味することは、レイアウト ファイルlocal.xml
は 1 つの場所からしか取得できず、現在のテーマに最も固有のものになるということです。そのため、Magento は次の優先順位で検索します。
app/design/frontend/$package/$theme/layout/local.xml
app/design/frontend/$package/default/layout/local.xml
app/design/frontend/base/default/layout/local.xml
認識すべき重要なことは、これらの各ファイルは、それらに追加するのではなく、次のファイルをオーバーライドするということです。Magento 2.x ではこの状況に対処できる可能性があると聞いていますが、1.x ではこれを回避する必要があります。
考えられる解決策
これを解決する方法は、カスタム css ファイルを別のレイアウト ファイルにロードするだけの単純な拡張機能を作成することです。その後、新しいテーマでファイルは必要なくなり、local.xml
引き続き にフォールバックしdefault
ます。
app/etc/modules/My_Theme.xml :
<?xml version="1.0"?>
<config>
<modules>
<My_Theme>
<active>true</active>
<codePool>local</codePool>
</My_Theme>
</modules>
</config>
app/code/local/My/Theme/etc/config.xml :
<?xml version="1.0"?>
<config>
<modules>
<My_Theme>
<version>0.1.0</version>
</My_Theme>
</modules>
<frontend>
<layout>
<updates>
<my_theme>
<file>my_theme.xml</file>
</my_theme>
</updates>
</layout>
</frontend>
</config>
app/design/frontend/$package/$theme/layout/my_theme.xml :
<?xml version="1.0"?>
<layout version="0.1.0">
<default>
<reference name="head">
<action method="addCss"><stylesheet>css/my_theme.css</stylesheet></action>
</reference>
</default>
</layout>
これは、Magento のデザイン フォールバック メソッドを使用して、ファイルもロードします。skin/frontend/$package/$theme/css/my_theme.css
したがって、これをサブディレクトリまたはサブディレクトリに配置できます$package/default/css/
。