Avez-vous essayé l'action setTemplate lorsque le référencement du conteneur racine vous permettra de basculer les modèles sur 1column, 2columns-left, 2columns-right ou 3columns?
Aditya Shah
J'ai essayé de <déplacer l'élément = "product_list_toolbar" destination = "colonnes" avant = "div.sidebar.main" />
J'écris ce code dans mon projet et cela fonctionne pour moi, faites simplement la solution ci-dessus puis vérifiez que je suis sûr que cela fonctionne.
Chirag Patel
8
Je pense qu'il ne bouge pas en utilisant XML, car il commente dans le fichier module-catalogue / templates / product / list.phtml .
<?php echo $block->getToolbarHtml()?>
Il est également définir dans le module catalogue / view / frontend / layout / catalog_category_view.xml category.products.list bloc
Maintenant, créez Toolbar.phpun nouveau fichier à {{Package Name}}\{{Your Module Name}}\Block\ToolbarPuis après le code ci-dessous dans ce nouveau fichier:
namespace{{PackageName}}\{{YourModuleName}}\Block;classToolbarextends \Magento\Catalog\Block\Product\ProductList\Toolbar
{publicfunction getCollection(){
$productList = $this->getLayout()->getBlock('category.products.list');// use sortable parameters
$orders = $productList->getAvailableOrders();if($orders){
$this->setAvailableOrders($orders);}
$sort = $productList->getSortBy();if($sort){
$this->setDefaultOrder($sort);}
$dir = $productList->getDefaultDirection();if($dir){
$this->setDefaultDirection($dir);}
$modes = $productList->getModes();if($modes){
$this->setModes($modes);}
$coo = $productList->getLoadedProductCollection();// set collection to productList and apply sort
$this->setCollection($productList->getLoadedProductCollection());return parent::getCollection();}}
Maintenant, supprimez le bloc par défaut de la présentation de la vue des catégories.
Malheureusement, cela ne fonctionne pas. La barre d'outils ne restera tout simplement pas du tout. Et je ne comprends pas pourquoi. Il n'y a même pas d'appel à sa toHtmlméthode.
Le principal problème est l'ancien code de base de la relation entre la barre d'outils et la liste de produits. Une partie a déjà été corrigée dans Magento 2.2.x, mais il y a toujours des problèmes. Par exemple, peu importe où ou comment vous placez votre barre d'outils dans la mise en page, le bloc de liste de produits remettra toujours la barre d'outils en arrière comme son propre enfant (voir ce commentaire sur Github ).
Voici encore une autre solution qui est une combinaison de la solution de Nicholas Miller et de kunj. L'avantage par rapport à la solution de Nicholas Miller et Chirag Patel est que la collection de produits ne sera pas chargée deux fois.
Fournisseur / module / bloc / produit / liste de produits / barre d'outils.php
De même, le nom de bloc de barre d'outils correct doit également être défini en conséquence sur le bloc de la liste de produits (si le nom de votre barre d'outils personnalisée est différent de celui par défaut).
Mise à jour
Pour que cette solution fonctionne, vous avez besoin d'au moins Magento 2.2.6.
Cela ne fonctionne pas dans 2.2.5. Toute aide serait grandement appréciée.
Cypher909
Mon code a été testé avec 2.2.6. Je ne sais pas s'il existe des différences significatives entre 2.2.5et 2.2.6concernant le bloc de liste de produits ou le bloc de barre d'outils.
fritzmg
S'agit-il de tous les fichiers et du code nécessaires pour créer l'extension? J'ai également ajouté un module.xml. Je ne sais pas s'il me manque quelque chose.
Cypher909
Aussi pour le fichier Vendor / Module / Block / Product / ProductList.php était-il supposé être ListProduct.php?
Cypher909
1
Vous avez raison, cela fonctionne dans 2.2.6. Je ne sais pas quelle est la différence, mais je vais juste mettre à jour. Merci!
Cypher909
1
Ajoutez simplement le code ci-dessous dans le catalog_category_view.xmlfichier de votre thème personnalisé: -
Réponses:
Essaye ça.
1. Créez un fichier catalog_category_view sous
2. Créez le fichier list2.phtml sous
Remarque: Ici, j'ai déplacé la barre d'outils vers la barre latérale (navigation en couches).
J'espère que ca fonctionne!
la source
Je pense qu'il ne bouge pas en utilisant XML, car il commente dans le fichier module-catalogue / templates / product / list.phtml .
Il est également définir dans le module catalogue / view / frontend / layout / catalog_category_view.xml category.products.list bloc
la source
Essayez ce code Créez le module personnalisé.
Ajoutez ce code dans
catalog_category_view.xml
:Maintenant, créez
Toolbar.php
un nouveau fichier à{{Package Name}}\{{Your Module Name}}\Block\Toolbar
Puis après le code ci-dessous dans ce nouveau fichier:Maintenant, supprimez le bloc par défaut de la présentation de la vue des catégories.
la source
toHtml
méthode.$this->setChild()
appelconfigureToolbar
duProductList
. Voir github.com/magento/magento2/issues/7253#issuecomment-439630823Vous pouvez déplacer la barre latérale avant la zone de contenu principale en utilisant le code de mise en page ci-dessous:
Étape 1: créez / copiez le fichier 2columns-left.xml dans votre dossier Magento_Theme / page_layout / et remplacez le contenu ci-dessous:
Vous pouvez également modifier / ajouter vos classes CSS dans le conteneur.
la source
1. Chemin du module.
Créer un nouveau module Vendor_Module
Ajoutez un plugin pour empêcher la barre d'outils par défaut de s'afficher.
Ajoutez un nouveau bloc à la page de catégorie.
2. Vous pouvez appliquer les mêmes modifications à votre thème
Vous n'avez pas besoin de plugin car vous pouvez simplement commenter une ligne où la barre d'outils par défaut est rendue.
$block->getToolbarHtml()
Lignes de commentaires dansCréez la même classe de barre d'outils et mettez-la en disposition xml.
la source
Le principal problème est l'ancien code de base de la relation entre la barre d'outils et la liste de produits. Une partie a déjà été corrigée dans Magento 2.2.x, mais il y a toujours des problèmes. Par exemple, peu importe où ou comment vous placez votre barre d'outils dans la mise en page, le bloc de liste de produits remettra toujours la barre d'outils en arrière comme son propre enfant (voir ce commentaire sur Github ).
Voici encore une autre solution qui est une combinaison de la solution de Nicholas Miller et de kunj. L'avantage par rapport à la solution de Nicholas Miller et Chirag Patel est que la collection de produits ne sera pas chargée deux fois.
Fournisseur / module / bloc / produit / liste de produits / barre d'outils.php
Fournisseur / Module / Bloc / Produit / ListProduct.php
etc / frontend / di.xml
Vous devriez maintenant pouvoir déplacer
product_list_toolbar
librement le sans aucun problème. par exemple: catalog_category_view.xml :En prime, vous pouvez également définir un nom de bloc de liste de produits personnalisé, si vous devez:
De même, le nom de bloc de barre d'outils correct doit également être défini en conséquence sur le bloc de la liste de produits (si le nom de votre barre d'outils personnalisée est différent de celui par défaut).
Mise à jour
Pour que cette solution fonctionne, vous avez besoin d'au moins Magento
2.2.6
.la source
2.2.6
. Je ne sais pas s'il existe des différences significatives entre2.2.5
et2.2.6
concernant le bloc de liste de produits ou le bloc de barre d'outils.Ajoutez simplement le code ci-dessous dans le
catalog_category_view.xml
fichier de votre thème personnalisé: -la source