質問

ソートオプションとポケットベルを製品リストから表示するツールバーを移動しようとしているので、パンくずとカテゴリ名で束ねることができます。

このサイトを見つけました それはMagentoの古いバージョンでは機能しましたが、CE 1.7またはEE 1.12では機能していません。

コメントでは、誰かがルートに移動するコードを持っていましたが、それも機能しません。これは、それをカテゴリ/ビューに移動するためのコードでした。

$toolbar = $this->getChild('product_list')->getToolbarBlock();
$toolbar->setCollection($this->getChild('product_list')->getLoadedProductCollection());
echo $toolbar->toHtml();

パン粉、カテゴリ名、ツールバーをグループ化する別の方法がある場合は、私に知らせてください。

役に立ちましたか?

解決

Catalog/product_listcatalog/product_list_toolbar 互いに非常に有線トラフなので、一緒に使用することに固執しています。ただし、ツールバーのみを表示したい場合は、(ほぼ)空のProduct_Listテンプレートを作成する必要があります。

パン粉ブロックにツールバーが表示されるとしますが、これは本当にブロックで動作するはずです。

次の更新をあなたのどこかに置きます layout/local.xml (catalog_category_defaultにも必要な場合があります):

<catalog_category_layered>
    <reference name="breadcrumbs">
        <block type="catalog/product_list" name="toolbar_only" template="catalog/product/list/toolbar_only.phtml">
            <block type="catalog/product_list_toolbar" name="product_list_toolbar_only" template="catalog/product/list/toolbar.phtml">
                <block type="page/html_pager" name="product_list_toolbar_pager"/> 
            </block>    
            <action method="setToolbarBlockName"><name>product_list_toolbar_only</name></action>
        </block>            
    </reference>            
</catalog_category_layered>

ワンライナー製品リストテンプレートを作成します template/catalog/product/list/toolbar_only.phtml:

<?php echo $this->getToolbarHtml() ?>

その後、パンくずのテンプレートに必要な場所に新しいブロックを挿入できます。

template/page/html/breadcrumbs.phtml:

<?php echo $this->getChildHtml('toolbar_only'); ?>

他のヒント

レイアウトXMLとテンプレートハックを介してツールバーブロックを移動しようとした後、JavaScriptを介して移動する方がずっと簡単だと判断しました。このようにして、機能を破るリスクなしに、より多くの制御を提供すると思います。

jQuery(document).ready(function($) {
     $(".breadcrumbs").after($(".category-products > .toolbar"));
});

このメソッドは、特定のセレクターを使用して最初のツールバーではなく、最初のツールバーを移動します .category-products > .toolbar

この方法が最適な理由についてのいくつかの推論:

  1. 製品リストとツールバーは非常に絡み合っており、ブロックで互いに参照しているので、コードの観点から一緒に保つことは理にかなっています - 彼らは手をつないで行きます
  2. ロジックをブロックするためのコードが少なく、変更が少ないことは、バグがポップアップする確率が少ないことを意味します
  3. JavaScriptを使用すると、ページのどこにでも簡単に移動できます
  4. レイアウトXMLの使用製品リストのページにJavaScriptのみを含めることができます
  5. JavaScriptを介して移動することは拡張可能で将来の根拠があります - 製品リストの背後にあるロジックまたはツールバーブロックがMagentoの新しいリリースの変更をブロックすると、この方法は引き続き機能します。

Luffyのコードはそれほど遠くありません

ブロックをサイトの他の部分にコピーするには、メインレイアウトオブジェクトを取得してから、名前ごとにコンテンツブロックを取得できます。

      $layout = Mage::app()->getLayout();
      $content = $layout->getBlock('content');
      $categoryProducts = $content->getChild('category.products');
      $productList = $categoryProducts->getChild('product_list');
      $toolbar = $productList->getToolbarBlock();
      $toolbar->setCollection($productList->getLoadedProductCollection());
      echo $toolbar->toHtml();

コードを試してください:

getParentBlock();
$content = $parent->getChild(‘content’);
$categoryProducts = $content->getChild(‘category.products’);
$productList = $categoryProducts->getChild(‘product_list’);
$toolbar = $productList->getToolbarBlock();
$toolbar->setCollection($productList->getLoadedProductCollection());
echo $toolbar->toHtml();
ライセンス: CC-BY-SA帰属
所属していません magento.stackexchange
scroll top