Haben Sie die Aktion setTemplate ausprobiert, wenn Sie auf den Stammcontainer verweisen, um Vorlagen auf 1 Spalte, 2 Spalten links, 2 Spalten rechts oder 3 Spalten umzuschalten?
Aditya Shah
Ich habe versucht, <move element = "product_list_toolbar" destination = "columns" vor = "div.sidebar.main" />
hweb87
Antworten:
8
Versuche dies.
1. Erstellen Sie die Datei catalog_category_view unter
Ich schreibe diesen Code in mein Projekt und er funktioniert für mich. Führen Sie einfach die obige Lösung aus und überprüfen Sie, ob ich sicher bin, dass er funktioniert.
Chirag Patel
8
Ich denke, es bewegt sich nicht mit XML, weil es in der Datei module-catalog / templates / product / list.phtml kommentiert .
<?php echo $block->getToolbarHtml()?>
Außerdem wird es im Block module-catalog / view / frontend / layout / catalog_category_view.xml category.products.list definiert
Erstellen Sie jetzt eine neue Toolbar.phpDatei unter {{Package Name}}\{{Your Module Name}}\Block\ToolbarDann hinter dem folgenden Code in dieser neuen Datei:
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();}}
Entfernen Sie nun den Standardblock aus dem Layout der Kategorieansicht.
Leider funktioniert das nicht. Die Symbolleiste wird immer noch einfach überhaupt nicht gerendert. Und ich verstehe nicht warum. Es gibt nicht einmal einen Aufruf seiner toHtmlMethode.
Das Hauptproblem ist die alte Codebasis der Beziehung zwischen Symbolleiste und Produktliste. Einiges davon wurde bereits in Magento 2.2.x behoben, aber es gibt immer noch Probleme. Zum Beispiel, unabhängig davon , wo oder wie Sie Ihre Symbolleiste im Layout platzieren, wird die Produktliste Block immer die Symbolleiste zurück , als sein eigenes Kind bewegen (siehe diesen Kommentar auf Github ).
Hier ist noch eine andere Lösung, die eine Kombination aus Nicholas Millers und Kunjs Lösung ist. Der Vorteil gegenüber der Lösung von Nicholas Miller und Chirag Patel besteht darin, dass die Produktkollektion nicht zweimal geladen wird.
Ebenso sollte der richtige Name des Symbolleistenblocks im Block der Produktliste entsprechend festgelegt werden (wenn der Name Ihrer benutzerdefinierten Symbolleiste nicht der Standardname ist).
Aktualisieren
Damit diese Lösung funktioniert, benötigen Sie mindestens Magento 2.2.6.
Dies funktioniert in 2.2.5 nicht. Jede Hilfe wäre sehr dankbar.
Cypher909
Mein Code wurde mit getestet 2.2.6. Ich bin nicht sicher, ob es signifikante Unterschiede zwischen 2.2.5und in 2.2.6Bezug auf den Produktlistenblock oder den Symbolleistenblock gibt.
Fritzmg
Sind all diese Dateien und Codes erforderlich, um die Erweiterung vorzunehmen? Ich habe auch eine module.xml hinzugefügt. Ich bin mir nicht sicher, ob mir etwas fehlt.
Cypher909
Auch für die Datei Vendor / Module / Block / Product / ProductList.php sollte es nicht ListProduct.php sein?
Cypher909
1
Sie haben Recht, es funktioniert in 2.2.6. Ich bin mir nicht sicher, was der Unterschied ist, aber ich werde nur aktualisieren. Vielen Dank!
Cypher909
0
Fügen Sie einfach den folgenden Code in die catalog_category_view.xmlDatei Ihres benutzerdefinierten Designs ein: -
Antworten:
Versuche dies.
1. Erstellen Sie die Datei catalog_category_view unter
2. Erstellen Sie die Datei list2.phtml unter
Hinweis: Hier habe ich die Symbolleiste in die Seitenleiste verschoben (geschichtete Navigation).
Ich hoffe es klappt!
quelle
Ich denke, es bewegt sich nicht mit XML, weil es in der Datei module-catalog / templates / product / list.phtml kommentiert .
Außerdem wird es im Block module-catalog / view / frontend / layout / catalog_category_view.xml category.products.list definiert
quelle
Versuchen Sie diesen Code Erstellen Sie das benutzerdefinierte Modul.
Fügen Sie diesen Code hinzu in
catalog_category_view.xml
:Erstellen Sie jetzt eine neue
Toolbar.php
Datei unter{{Package Name}}\{{Your Module Name}}\Block\Toolbar
Dann hinter dem folgenden Code in dieser neuen Datei:Entfernen Sie nun den Standardblock aus dem Layout der Kategorieansicht.
quelle
toHtml
Methode.$this->setChild()
AnrufconfigureToolbar
derProductList
. Siehe github.com/magento/magento2/issues/7253#issuecomment-439630823Sie können die Seitenleiste vor dem Hauptinhaltsbereich mit dem folgenden Layoutcode verschieben:
Schritt 1: Erstellen / kopieren Sie die Datei 2columns-left.xml in Ihrem Ordner Magento_Theme / page_layout / und ersetzen Sie den folgenden Inhalt:
Sie können auch Ihre CSS-Klassen im Container ändern / hinzufügen.
quelle
1. Modul Weg.
Erstellen Sie ein neues Modul Vendor_Module
Fügen Sie ein Plugin hinzu, um zu verhindern, dass die Standardsymbolleiste angezeigt wird.
Fügen Sie der Kategorieseite einen neuen Block hinzu.
2. Sie können dieselben Änderungen auf Ihr Thema anwenden
Sie benötigen kein Plugin, da Sie nur eine Zeile kommentieren können, in der die Standardsymbolleiste gerendert wurde.
Kommentarzeilen
$block->getToolbarHtml()
inErstellen Sie dieselbe Symbolleistenklasse und fügen Sie sie in das XML-Layout ein.
quelle
Das Hauptproblem ist die alte Codebasis der Beziehung zwischen Symbolleiste und Produktliste. Einiges davon wurde bereits in Magento 2.2.x behoben, aber es gibt immer noch Probleme. Zum Beispiel, unabhängig davon , wo oder wie Sie Ihre Symbolleiste im Layout platzieren, wird die Produktliste Block immer die Symbolleiste zurück , als sein eigenes Kind bewegen (siehe diesen Kommentar auf Github ).
Hier ist noch eine andere Lösung, die eine Kombination aus Nicholas Millers und Kunjs Lösung ist. Der Vorteil gegenüber der Lösung von Nicholas Miller und Chirag Patel besteht darin, dass die Produktkollektion nicht zweimal geladen wird.
Anbieter / Modul / Block / Produkt / Produktliste / Toolbar.php
Anbieter / Modul / Block / Produkt / ListProduct.php
etc / frontend / di.xml
Jetzt sollten Sie sich problemlos
product_list_toolbar
frei bewegen können. Beispiel: catalog_category_view.xml :Als zusätzlichen Bonus können Sie auch einen benutzerdefinierten Produktlistenblocknamen festlegen, wenn Sie Folgendes benötigen:
Ebenso sollte der richtige Name des Symbolleistenblocks im Block der Produktliste entsprechend festgelegt werden (wenn der Name Ihrer benutzerdefinierten Symbolleiste nicht der Standardname ist).
Aktualisieren
Damit diese Lösung funktioniert, benötigen Sie mindestens Magento
2.2.6
.quelle
2.2.6
. Ich bin nicht sicher, ob es signifikante Unterschiede zwischen2.2.5
und in2.2.6
Bezug auf den Produktlistenblock oder den Symbolleistenblock gibt.Fügen Sie einfach den folgenden Code in die
catalog_category_view.xml
Datei Ihres benutzerdefinierten Designs ein: -quelle