という div を作成しましnav_container
た。Magento 製品カテゴリをデフォルトのヘッダーではなく、その div に配置したいと考えています。
これを行う最も簡単な方法は何ですか? 私はこれを長い間研究してきましたが、解決策はありません。アドバイスをありがとう。Magento 1.7 を使用しています。
これを実現するには、いくつかの方法があります。
コピーapp/design/frontend/base/default/page/html/topmenu.phtml
してapp/design/frontend/your_package/your_theme
、ラッピング div に追加するだけです。
行を編集app/design/frontend/your_package/your_theme/page/html/header
して見つけます:<?php echo $this->getChildHtml('topMenu') ?>
そして、それを div で囲むだけです
レイアウト 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>
最後に、キャッシュをクリアしてページをリロードします。