Domanda

Sto cercando di spostare la barra degli strumenti che mostra le opzioni di ordinamento e il cercapersone fuori dalla lista dei prodotti in modo da poter riunire con il pangrattato e il nome della categoria.

I trovato questo sito che ha lavorato per le vecchie versioni di Magento, ma non funziona per CE 1.7 o EE 1.12.

Nel commenti qualcuno aveva qualche codice per spostarla alla radice, ma che non lo fa anche il lavoro. Questo è stato il codice per spostarlo alla categoria / vista che aiuterebbe:

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

Se c'è un altro modo di raggruppare il pangrattato, nome della categoria e della barra degli strumenti insieme fammi sapere.

È stato utile?

Soluzione

Catalog/product_list e catalog/product_list_toolbar sono così cablati depressione con l'altro che sei bloccato con il loro utilizzo insieme. Se si desidera solo alla barra degli strumenti di visualizzazione, però, è necessario creare un (quasi) modello vuoto Product_List.

dici che vuoi barra degli strumenti visualizzata nel blocco pangrattato, ma questo dovrebbe funzionare con qualsiasi blocco davvero.

Inserire il seguente aggiornamento da qualche parte nel vostro layout/local.xml (potrebbe essere necessario uno per catalog_category_default, anche):

<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>

Creazione di un modello di elenco dei prodotti one-liner in template/catalog/product/list/toolbar_only.phtml:

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

È possibile quindi inserire il nuovo blocco dove vuoi nel modello pangrattato:

template/page/html/breadcrumbs.phtml:

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

Altri suggerimenti

Dopo aver cercato di spostare il blocco della barra degli strumenti attraverso XML layout e template hack ho deciso che era molto più facile per spostarlo tramite JavaScript. Penso che in questo modo si dà più controllo, senza alcun rischio di rottura funzionalità.

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

Nota questo metodo sposta solo la prima barra e non quella inferiore utilizzando il selettore specifico .category-products > .toolbar

Alcuni più ragionare sul motivo per cui questo metodo è migliore:

  1. L'elenco dei prodotti e della barra degli strumenti sono fortemente intrecciate, che fa riferimento a vicenda nelle loro blocchi quindi ha senso per tenerli insieme in termini di codice - vanno di pari passo
  2. meno codice e meno modifiche ai mezzi logici di blocco in meno di probabilità di bug a pop-up
  3. Utilizzo di javascript si può facilmente spostare qualsiasi punto della pagina
  4. Uso di layout XML è possibile includere solo il javascript pagine con un elenco di prodotti
  5. Muoversi tramite javascript è estensibile e a prova di futuro -. Se la logica dietro la lista dei prodotti o della barra degli strumenti cambia blocchi nelle nuove versioni di Magento questo metodo funzionerà ancora

Codice di Rufy non è lontano

Per copiare il blocco ad altre parti del tuo sito, è possibile ottenere l'oggetto di layout principale, e poi basta ottenere il blocco di contenuto per nome

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

Prova il codice:

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();
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a magento.stackexchange
scroll top