2

この質問が出されたことは知っていますが、自分に合った答えを見つけることができませんでした。検索結果を表示するときにCMS静的ページも検索するカスタムモジュールを作成しました。このモジュール内に、レイアウトxmlを更新するファイルがあります。私のxmlがロードされていると確信しています。何らかの理由で、レイヤードナビゲーションを削除または設定解除して、右の列に移動しようとしても効果がありませんでした。以下は私のコードです。誰かが私の間違いを指摘するのを手伝ってくれることを望んでいました。ありがとうございました!

<layout version = "0.1.0">

<catalog_category_default>
    <reference name="left">
        <action method="unsetChild"><name>catalog.leftnav</name></action>
    </reference>
    <reference name="right">
        <action method="insert"><child>catalog.leftnav</child></action>
    </reference>
</catalog_category_default>

<catalogsearch_result_index>
    <reference name="content">
        <block type="cmssearch/results" name="cms-search-results-view" after="search.result" template="cmssearch/cmssearchview.phtml">
        </block>
    </reference>
    <reference name="left">
        <!-- <remove name = "catalogsearch.leftnav" /> -->
        <action method="unsetChild"><name>catalogsearch.leftnav</name></action>
    </reference>
    <reference name="right">
        <!--  <block type="catalogsearch/layer" name="catalogsearch.leftnav" before="+" template="catalog/layer/view.phtml"/> -->
        <action method="insert"><child>catalogsearch.leftnav</child></action>
    </reference>
</catalogsearch_result_index>

<catalog_category_layered>
    <reference name="left">
        <action method="unsetChild"><name>catalog.leftnav</name></action>
    </reference>
    <reference name="right">
        <action method="insert"><child>catalog.leftnav</child></action>
    </reference>
</catalog_category_layered>

4

2 に答える 2

6

Community Edition でも同様の問題がありました。階層化されたナビゲーション 'catalog.leftnav' を mycustomblock に移動しようとしましたが、成功しましたが、エラーが発生しました

相関名「customattribute」を複数回定義することはできません

これを行う<remove name="catalog.leftnav" />と、mycustomblock からも削除されました。unsetChild はまったく機能しませんでした。ブロックの名前を変更する Emil Stewart ソリューションはうまく機能しました。ありがとう!したがって、CE で同じ問題が発生している場合は、次の手順を実行してください。

  1. local.xml に追加します<remove name="catalog.leftnav" />
  2. 次に、必要な場所にcatalog/layer_viewブロックを追加しますが、名前を変更します

<block type="catalog/layer_view" name="yourname.catalog.leftnav" template="catalog/layer/view.phtml"/>

しかし、ここでさらに優れたよりクリーンなソリューション を見つけました

    <reference name="left">
        <action method="unsetChild"><name>catalog.leftnav</name></action>
    </reference>
    <reference name="right">
        <action method="insert"><child>catalog.leftnav</child></action>
    </reference>
于 2013-03-13T21:24:26.077 に答える
5

だから私は実際に問題を理解しました。私は Magento Enterprise Edition を使用しています。Enterprise Edition は、独自のレイヤード ナビゲーションを追加するためにレイヤード ナビゲーションを明示的に削除します。テンプレートパスのヒントがあり、階層化されたナビゲーションがエンタープライズブロックとして表示されていたので、これをキャッチする必要がありました. とにかく、問題を引き起こすコードは次のとおりです。

<catalogsearch_result_index>
    <reference name="left">
        <remove name="catalogsearch.leftnav"/>
        <block type="enterprise_search/catalogsearch_layer" name="enterprisesearch.leftnav" before="-" template="catalog/layer/view.phtml"/>
    </reference>
</catalogsearch_result_index>

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

この問題を解決するには、自分の名前参照を enterprisecatalog.leftnav に変更するだけで済みました。

于 2013-02-12T17:54:08.843 に答える