1

という div を作成しましnav_containerた。Magento 製品カテゴリをデフォルトのヘッダーではなく、その div に配置したいと考えています。

これを行う最も簡単な方法は何ですか? 私はこれを長い間研究してきましたが、解決策はありません。アドバイスをありがとう。Magento 1.7 を使用しています。

4

1 に答える 1

3

これを実現するには、いくつかの方法があります。

  1. コピーapp/design/frontend/base/default/page/html/topmenu.phtmlしてapp/design/frontend/your_package/your_theme、ラッピング div に追加するだけです。

  2. 行を編集app/design/frontend/your_package/your_theme/page/html/headerして見つけます:<?php echo $this->getChildHtml('topMenu') ?>そして、それを div で囲むだけです

  3. レイアウト xml、具体的にはpage/html_wrapperブロックを使用することもできますが、この単純な例では、オプション 1 または 2 が最適なオプションである可能性が高くなります。

編集

ブロックに関する混乱に気づいたら、以下の正しい解決策を参照してください

まず第一に、Magento ではブロックは非常に具体的な意味を持ち、html タグの意味とはまったく異なります。ここでブロックの定義を見つけることができます: http://www.magentocommerce.com/design_guide/articles/magento-design-terminologies4#term-blocks

ここで、1.7 CE で上部のナビゲーションを移動するには:

Magento のレイアウトと同様に、2 つの主なオプションがあります。ベース レイアウト ファイルを現在のテーマにコピーして編集するか、すべてのベース レイアウト オーバーライドにテーマで local.xml ファイルを使用します。

それぞれに長所と短所がありますが、特別な理由がない限り、local.xml を使用することをお勧めします。ただし、どの方法を選択するかは完全にあなた次第です:)

1. local.xml の使用

app/design/frontend/your_package/your_theme/layout/local.xml
<layout version="0.1.0">

    <!-- Other layout xml -->

    <!-- 
        Unset the nav from the header 
    -->
    <reference name="header">
        <action method="unsetChild"><alias>topMenu</alias></action>
    </reference>

    <!-- 
        Insert it into your new containing block
    -->
    <reference name="nav_container">
        <action method="insert"><alias>top.menu</alias></action>
    </reference>

    <!-- Other layout xml -->

</layout>

2. ベースファイルのコピー

まず、にコピーapp/design/frontend/base/default/layout/page.xmlしますapp/design/frontend/your_package/your_theme/layout/page.xml

そのままの場合、ヘッダー ブロックは次のようになります。

<block type="page/html_header" name="header" as="header">
    <block type="page/template_links" name="top.links" as="topLinks"/>
    <block type="page/switch" name="store_language" as="store_language" template="page/switch/languages.phtml"/>
    <block type="core/text_list" name="top.menu" as="topMenu" translate="label">
        <label>Navigation Bar</label>
        <block type="page/html_topmenu" name="catalog.topnav" template="page/html/topmenu.phtml"/>
    </block>
    <block type="page/html_wrapper" name="top.container" as="topContainer" translate="label">
        <label>Page Header</label>
        <action method="setElementClass"><value>top-container</value></action>
    </block>
</block>

次のように変更します。

<block type="page/html_header" name="header" as="header">
    <block type="page/template_links" name="top.links" as="topLinks"/>
    <block type="page/switch" name="store_language" as="store_language" template="page/switch/languages.phtml"/>
    <block type="page/html_wrapper" name="top.container" as="topContainer" translate="label">
        <label>Page Header</label>
        <action method="setElementClass"><value>top-container</value></action>
    </block>
</block>

この時点で、レイアウトから top.menu ブロックを削除しただけです。

次に、正しいノード nav_container の下のレイアウトにブロックを追加し直す必要があります。

そのため、現在 nav_container ブロックを宣言しているところに、削除したばかりの xml を子ノードとして追加します。

<block type="core/text_list" name="top.menu" as="topMenu" translate="label">
    <label>Navigation Bar</label>
    <block type="page/html_topmenu" name="catalog.topnav" template="page/html/topmenu.phtml"/>
</block>

最後に、キャッシュをクリアしてページをリロードします。

于 2012-06-16T17:28:22.880 に答える