Question

Je suis en train de déplacer la barre d'outils qui affiche les options de tri et le récepteur d'appel de la liste des produits, donc je peux le paquet avec les miettes de pain et le nom de la catégorie.

trouvé ce site qui a travaillé pour les anciennes versions de Magento, mais il ne fonctionne pas pour cE 1.7 ou EE 1.12.

Dans la personne de commentaires avait un code pour le déplacer à la racine mais cela ne fonctionne pas non plus. Ce fut le code pour le déplacer à la catégorie / vue qui contribuerait à:

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

S'il y a une autre façon de regrouper les miettes de pain, le nom de la catégorie et la barre d'outils en même temps me le faire savoir.

Était-ce utile?

La solution

Catalog/product_list et catalog/product_list_toolbar sont si câblés creux les uns aux autres que vous êtes coincé avec les utiliser ensemble. Si vous voulez seulement la barre d'outils d'affichage, cependant, vous devrez créer un (presque) modèle de Product_List vide.

Dites que vous voulez afficher la barre d'outils dans le bloc de mie de pain, mais cela devrait fonctionner avec un bloc vraiment.

Mettre la part de mise à jour suivante dans votre layout/local.xml (vous devrez peut-être un pour catalog_category_default aussi):

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

Créer un modèle de liste de produits one-liner en template/catalog/product/list/toolbar_only.phtml:

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

Vous pouvez alors insérer le nouveau bloc où vous voulez dans votre modèle de panure:

template/page/html/breadcrumbs.phtml:

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

Autres conseils

Après avoir essayé de déplacer le bloc de barre d'outils XML par le biais de la mise en page et hacks de modèle j'ai décidé qu'il était beaucoup plus facile de le déplacer via javascript. Je pense que cette façon vous donne plus de contrôle sans risque de casser la fonctionnalité.

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

Notez que cette méthode ne se déplace que la première barre d'outils et non celle du bas à l'aide du sélecteur spécifique .category-products > .toolbar

Un peu plus raisonnement pour expliquer pourquoi cette méthode est la meilleure:

  1. La liste des produits et la barre d'outils sont fortement imbriquées, faisant référence à l'autre dans leurs blocs donc il est logique de les garder ensemble en termes de code - ils vont main dans la main
  2. Moins de code et moins de changements à des moyens logiques de blocs moins de probabilité pour les bugs de pop-up
  3. Utilisation de javascript vous pouvez vous déplacer facilement partout sur la page
  4. Utilisation de XML de mise en page vous ne pouvez inclure le javascript sur les pages avec une liste de produits
  5. Déplacement via javascript est extensible et pérenne -. Si la logique derrière la liste des produits ou des blocs barre d'outils change dans les nouvelles versions de Magento cette méthode sera encore du travail

Le code de Luffy est pas loin

Pour copier le bloc à d'autres parties de votre site, vous pouvez obtenir l'objet principal de mise en page, et puis juste obtenir le bloc de contenu par nom

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

Essayez le code:

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();
Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top