質問

パッケージに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 />.

ライセンス: CC-BY-SA帰属
所属していません magento.stackexchange
scroll top