Frage

Ich versuche, die Symbolleiste zu verschieben, die die Sortieroptionen und den Pager aus der Produktliste herausstellt, damit ich sie mit den Breadcrumbs und dem Kategoriennamen bündeln kann.

ich fand diese Seite Das funktionierte für ältere Versionen von Magento, aber es funktioniert nicht für CE 1.7 oder EE 1.12.

In den Kommentaren hatte jemand einen Code, um ihn in die Wurzel zu verschieben, aber das funktioniert auch nicht. Dies war der Code, um ihn in Kategorie/Ansicht zu verschieben, was helfen würde:

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

Wenn es eine andere Möglichkeit gibt, die Brotkrumen zu gruppieren, haben Sie die Kategorie und die Symbolleiste zusammen.

War es hilfreich?

Lösung

Catalog/product_list und catalog/product_list_toolbar sind so verdrahtet miteinander, dass Sie mit ihnen zusammenhalten. Wenn Sie jedoch nur die Symbolleiste anzeigen möchten, müssen Sie eine (fast) leere Produkt_List -Vorlage erstellen.

Angenommen, Sie möchten, dass die Symbolleiste im Breadcrumbs -Block angezeigt werden, aber dies sollte wirklich mit jedem Block funktionieren.

Setzen Sie das folgende Update irgendwo in Ihrem ein layout/local.xml (Möglicherweise benötigen Sie auch einen für 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>

Erstellen Sie eine Ein-Liner-Produktlistenvorlage in template/catalog/product/list/toolbar_only.phtml:

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

Sie können dann den neuen Block einfügen, wo immer Sie möchten, in Ihre Vorlage für Brotkrumen:

template/page/html/breadcrumbs.phtml:

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

Andere Tipps

Nachdem ich versucht hatte, den Symbolleish -Block durch Layout -XML- und Vorlagen -Hacks zu verschieben, entschied ich, dass es viel einfacher war, ihn über JavaScript zu bewegen. Ich denke, dieser Weg gibt Ihnen mehr Kontrolle, ohne dass das Risiko einer Funktionalität gebrochen wird.

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

Beachten Sie, dass diese Methode nur die erste Symbolleiste und nicht die untere unter Verwendung des spezifischen Selektors bewegt .category-products > .toolbar

Einige weitere Argumentation darüber, warum diese Methode am besten ist:

  1. Die Produktliste und die Symbolleiste sind stark miteinander verflochten und beziehen sich aufeinander in ihren Blöcken
  2. Weniger Code und weniger Änderungen, um die Logik zu blockieren
  3. Mit JavaScript können Sie es einfach überall auf der Seite verschieben
  4. Mit Layout XML können Sie das JavaScript nur auf Seiten mit einer Produktliste einfügen
  5. Das Umzug über JavaScript ist erweiterbar und zukunftssicher - wenn sich die Logik hinter der Produktliste oder der Symbolleiste in den neuen Releases von Magento ändert. Diese Methode funktioniert weiterhin.

Ruffys Code ist nicht weit weg

Um den Block in andere Teile Ihrer Website zu kopieren, können Sie das Hauptlayoutobjekt erhalten und dann den Inhaltsblock mit Namen erhalten

      $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();

Probieren Sie den Code aus:

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();
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top