Pregunta

Estoy intentando mover la barra de herramientas que muestra las opciones de clasificación y el localizador de la lista de productos para que pueda agrupar con el pan rallado y el nombre de la categoría.

encontró este sitio que trabajó para las versiones anteriores de Magento pero no está trabajando para CE 1.7 o 1.12 EE.

En los comentarios alguien tenía algo de código para moverlo a la raíz, sino que también no funciona. Este era el código para moverlo a la categoría / vista lo que ayudaría a:

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

Si hay otra forma de agrupar las migas de pan, nombre de la categoría y la barra de herramientas en conjunto, hágamelo saber.

¿Fue útil?

Solución

Catalog/product_list y catalog/product_list_toolbar están tan conectados entre sí a través de que usted está atascado con su uso en conjunto. Si sólo desea la barra de herramientas de visualización, sin embargo, tendrá que crear una (casi) product_list plantilla vacía.

Digamos que quiere barra de herramientas que se muestra en el bloque de migas de pan, pero esto debería funcionar con cualquier bloque de verdad.

Ponga la siguiente actualización en algún lugar en su layout/local.xml (puede que tenga uno para catalog_category_default, también):

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

Crear una plantilla de la lista de productos de una sola línea en template/catalog/product/list/toolbar_only.phtml:

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

A continuación, se puede insertar el nuevo bloque en el que cada vez que desee en la plantilla de migas de pan:

template/page/html/breadcrumbs.phtml:

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

Otros consejos

Después de tratar de mover el bloque de la barra de herramientas a través de XML disposición y hacks plantilla decidí que era mucho más fácil para moverlo a través de JavaScript. Creo que de esta manera le da más control sin ningún riesgo de romper la funcionalidad.

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

Tenga en cuenta que este método sólo se mueve la primera barra de herramientas y no la de abajo usando el selector específica .category-products > .toolbar

Algunos más razonamiento de por qué este método es mejor:

  1. La lista de productos y la barra de herramientas están fuertemente entrelazados, haciendo referencia a unos de otros en sus bloques así que tiene sentido para mantenerlos juntos en términos de código - que van de la mano
  2. código menos y menos cambios en medios lógicos bloque menos probabilidad de errores para que aparezca
  3. Uso de JavaScript se puede mover fácilmente en cualquier lugar de la página
  4. Uso de XML diseño sólo se puede incluir el código JavaScript en las páginas con una lista de productos
  5. Mover a través de JavaScript es extensible y preparada para el futuro -. Si la lógica detrás de la lista de productos o la barra de herramientas bloques cambia en las nuevas versiones de Magento este método seguirá funcionando

Código de Luffy no está lejos

Para copiar el bloque a otras partes de su sitio, puede obtener el objeto principal de la disposición, y luego acaba de obtener el bloque de contenido por su nombre

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

Trate el código:

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();
Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top