1

私はEEを使用していますが、問題はCEでも同じだと思います。私がやりたいことはとても簡単に思えます。カテゴリページの左側のナビゲーションにあるすべてのバナーをフィルターナビゲーションの上に表示したいと思います。私が試したのは、after = "-"呼び出しを追加して、XMLファイル(EEの場合はsearch.xml、CEの場合はcatalog.xml)を変更することです。

<catalog_category_layered>
    <reference name="left">
        <remove name="catalog.leftnav"/>   
        <block type="enterprise_search/catalog_layer_view" name="enterprisecatalog.leftnav" template="catalog/layer/view.phtml" after="-" />  
    </reference>
</catalog_category_layered>

ただし、これによって何も変更されることはなく、バナーは引き続きレイヤードナビゲーションの下に読み込まれます。

「すべてのページ」の左側の列にロードするようにウィジェットを設定すると、列の上部に正しくロードされます。このソリューションは、ホームページにウィジェットもロードするため、望ましくありません。これがカテゴリページにのみ影響するようにします。

XMLブロックをまとめて削除し、ウィジェットにバナーとしてロードして、左側の列の任意の場所に配置することもできます。階層化されたナビゲーションオプションが選択されている場合、ページのAJAX読み込みが中断されるため、これも望ましくありません。

ウィジェット/バナーブロックには名前が付いているので、XMLでafter = "widget.banner.block.name"と言うことができますか?

4

2 に答える 2

0

これを行うために私が見つけた唯一の方法は、ロード後にJQueryを使用してバナーを含むウィジェットをレイヤードナビゲーションの上にプッシュすることでした。

//Move Category Widget zone above the layered navigation
jQuery(".catalog-category-view .col2-left-layout .col-left .widget").insertBefore(jQuery(".catalog-category-view .col2-left-layout .col-left .block-layered-nav"));
于 2012-12-12T20:10:40.623 に答える
-1

ブロックに名前を付けてから、好きなように注文する必要があります。

<block type="whatever" name="something" as="something" 
    template="bla.phtml" before="-" />

<block type="whatever" name="something_else" as="something_else" 
    template="bla.phtml" after="something" />

<block type="whatever" name="something_new" as="something_new" 
    template="bla.phtml" after="something_else" />

ホームページ以外のすべてのページにウィジェットを表示する場合は、すべてのページに表示するように設定してから、次のようにのみホームページから削除できます。

1)[CMS]-> [ページ]に移動し、ホームページを編集します

2)ページにレイアウトの更新を追加し、具体的にはウィジェットブロックを削除します。

<reference name="left">
    <action method="unsetChild"><alias>child_block_name</alias></action>
</reference>
于 2012-09-21T08:31:34.513 に答える