パッケージ内の複数のlocal.xmlレイアウトファイル
質問
パッケージに2つのテーマがあるとします。
- ベース(デフォルトとして設定)
- 子供(メインテーマとして設定)
どちらもレイアウトフォルダーにLocal.xmlを含む-Childテーマのlocal.xmlのみがロードされるため、ベースlocal.xmlのCSS、JS、またはレイアウトの更新はロードされません。
page.xmlを使用せずに(local.xmlと同じ機能を可能にしますが、継承とともに)、ベース用のxmlファイルと、両方とも呼ばれる子供用のxmlファイルをどのように持っていますか?
これには、使用可能なXMLファイル(例:Base-Local.xml)を追加することを唯一の目的でモジュールを構築する必要がありますか?
解決
あなたは正しいです、そして、これは複数のテーマを持つサイトの有効で使用されるアプローチです。さまざまなストアスコープに適用されるレイアウトの更新に使用できる追加の(あまり知られていない、めったに使用されていない)オプションがいくつかあります。ストアハンドルとテーマハンドルです。
アクションコントローラースーパークラスから Mage_Core_Controller_Varien_Action
(リンク):
public function addActionLayoutHandles()
{
$update = $this->getLayout()->getUpdate();
// load store handle
$update->addHandle('STORE_'.Mage::app()->getStore()->getCode());
// load theme handle
$package = Mage::getSingleton('core/design_package');
$update->addHandle(
'THEME_'.$package->getArea().'_'.$package->getPackageName().'_'.$package->getTheme('layout')
);
// load action handle
$update->addHandle(strtolower($this->getFullActionName()));
return $this;
}
コード「Deutsch」と「デフォルト」パッケージ「ドイツ語」テーマのテーマ構成を備えたストアの場合、ほとんどのビューで使用しているため、次のハンドルがほぼすべてのビューに適用されます。
<STORE_deutsch>
<THEME_frontend_default_german>
実装により、これらのハンドルはほぼ同じ方法で利用できます <default />
.
所属していません magento.stackexchange