3

すべてのカテゴリをリストしたメイン メニューを保持し、同じ magento ショップ内の Web サイト/ストアごとに個別のメニューを保持するため、メイン メニュー バーのほかにセカンダリ メニュー バーを追加しようとしています。私が使用しているテーマには既にメニュー ウィジェットが付属しており、目的は達成できましたが、CSS のスタイリングに少し問題があります。説明させてください。

2 つのメニューを用意するために、次のようにしました。

  1. コピーcommunity/Company/MenuWidgetlocal/MyCompany/MyMenuWidget
  2. ブロック、ヘルパーなど、コントローラー、モデルの下にあるすべてのファイルのすべての参照を置き換えましCompany_MenuWidgetMyCompany_MyMenuWidget。私は基本的にメニューウィジェットを複製しました。
  3. css.xml以下の行を下に追加しました

< 参照名="ヘッダー" >

< block type="cms/block" name="cms_my_menu_block" >

< action method="setBlockId" >< block_id>my_menu_block < /block_id >< /action> < /block>

  1. 次の行をheader.phtmlに追加しました

< div class="my-class" >< ?php echo $this->getChildHtml('cms_my_menu_block') ?>< /div>

  1. nav-container クラスと同じ値を持つクラスを CSS スタイル シート 'my-class' に追加し、値を変更してメニューを必要な場所に配置しました。

  2. MenuWidget スタイル シートを複製し、必要に応じて名前を変更しました。

  3. 表示したいストア/ウェブサイトの識別子を含むブロックを作成しましたが、表示されました。

今私が直面している問題は、元のメニューがコピーされたスタイル シートを部分的に取得しているため、コピーを変更すると、すべての変更ではなくメインに部分的に影響することです。たとえば、コンテナを下に移動して配置することはできましたが、位置を変更する必要があった「ドロップダウン ポップアップ」も、移動すると両方のメニューで影響を受けます。

スタイルシートを完全に分離するにはどうすればよいですか? 他のメニュー バーが新しいスタイル シートを採用している理由もわかりません。

どんな助けでも大歓迎です。

4

2 に答える 2

3

「その他」メニューが両方のスタイルシートに反応する理由は、両方のスタイルシートがロードされており、おそらくクラス/ID を変更していないためです。おそらくデフォルトのリファレンスにある local.xml を使用して、もう一方を削除できます。

<reference name="head">
    <action method="removeItem">
        <type>skin_css</type>
        <name>css/path/to.css</name>
    </action>
</reference>

これを処理するより良い方法は、他のメニューにそのことをさせ、自分のモジュールで必要な部分をオーバーライドすることです。ただし、それを行う方法は、この/任意の回答の範囲外だと思います。

于 2012-08-28T13:46:34.580 に答える
0
$id=2; 
$catagory_model = Mage::getModel('catalog/category');
$categories = $catagory_model->load($id);
if(!empty($categories))
{
    $cats = explode(",", $categories->getChildren());
    foreach($cats AS $c)
{
    $cat = $catagory_model->load(trim($c));
    echo '<a href="/'.$cat->getUrlKey().'">'.$cat->getName().'</a>';
}
}

これは、/html/footer.phtml テンプレート ファイルの Core 1.9 Magento Setup で機能しました。

于 2015-02-08T19:54:43.313 に答える