2

マルチストア Magento セットアップ (Magento 1.7.0.2) があり、異なるストア用に 2 つの異なるテンプレートが必要です。2 つ目のテンプレートをインストールすると、最初のテンプレートのメニューが表示されなくなります。これは、テンプレートによって実装されたカスタムメニュー モジュールが原因だと思います。

モジュールを編集して、2 つの異なる方法で Magento ナビゲーションを上書きする方法 (2 つの異なるテンプレートの場合)?

乾杯!

4

2 に答える 2

0

あなたの説明によると、問題はデフォルトのブロック、コントローラー、またはモデルがメニューモジュールによってオーバーライドされていることが原因だと思います。現在のバージョンの Magento でこれを処理するのは簡単ではありません。あなたが遭遇した状況に関して、解決策を提案できます。

どのクラスがオーバーライドされているかを確認する

メニュー モジュールの下の config.xml を確認できます。パスは次のようになります。

/MAGENT_ROOT/app/code/{local,community}/Custom/Menu/etc/config.xml

タグをチェック

/config/global/models/xxxx/rewrite        # for model rewrite
/config/global/rewrite/xxxx/{from, to}    # for controller rewrite
/config/global/blocks/xxxx/rewrite        # for block rewrite

次に、モジュールによってオーバーライドされたものを表示できます。

ストア ビュー ベースのオプションを作成する

/MAGENT_ROOT/app/code/{local,community}/Custom/Menu/etc/system.xml

Enable the extensionというオプションを追加します。(以下のようにいくつかのスニペット)

# the xml should insert into /config/sections/xxxx/groups/general/fields/
<enabled>
    <label>Enable the extension</label>
    <frontend_type>select</frontend_type>
    <source_model>adminhtml/system_config_source_yesno</source_model>
    <sort_order>10</sort_order>
    <show_in_default>1</show_in_default>
    <show_in_website>1</show_in_website>
    <show_in_store>1</show_in_store>
</enabled>

クラスを確認する

適切にプログラムされている場合は、デフォルトのクラスをオーバーライドする必要があります。したがって、次のロジックを使用できます。

if (Mage::getStoreConfig('xxxx/general/enabled') === '1') {
    # the original module logic
} else {
    parent::some_method($_args);
}

これは、私の仮定の下で提案できるソリューションです。お役に立てば幸いです。

于 2014-02-13T05:30:47.797 に答える
0

2 番目のストアを作成するときに、同じカテゴリ ルートまたはそのストアのカスタム カテゴリ リストを選択するだけで、2 番目、3 番目のストアでメニューが機能します。

System > Manage Stores:

Store Name現在メニューが表示されていないものを選択し、デフォルトを選択しますRoot Category *

これがお役に立てば幸いです。

于 2014-02-14T10:08:53.857 に答える