Auf der Homepage meiner Magento-Website wird eine Produktliste angezeigt . Diese Produktliste wurde mit der catalog product list widgetKonfiguration erstellt, um die Produkte anzuzeigen, die sich in der Homepage- Kategorie befinden. Produkte in dieser Kategorie haben eine Positionsnummer. Produkte werden in einer scheinbar preisbestellten Liste angezeigt. Wie kann ich das Widget dazu bringen, die Liste der geordneten Positionen anzuzeigen?
Diese Reihenfolge richtet sich immer nach der Position der Stammkategorie. Wenn Sie nach einer bestimmten Kategorie sortieren möchten, müssen Sie dafür ein neues benutzerdefiniertes Widget erstellen.
Diese Antwort hat mir geholfen, danke. Ich habe $ result-> setOrder ('created_at', 'DESC') verwendet. stattdessen.
Paul
1
Richtig, so alte Frage, aber relevant für mich. Leider gab es keine Antwort, also musste ich sie selbst reparieren und herausfinden, dass ich die Frage beantworten werde, während ich dabei bin.
Zuerst habe ich mich im Katalogwidget-Modul in Magento umgesehen und gefunden \Magento\CatalogWidget\Block\Product\ProductsList::createCollection. Dies bestätigt, dass keine Sortierfunktion verfügbar ist. Also kommt ein Plugin:
classAfterCreateCollection{publicfunction aftercreateCollection($subject, $result){/**
* @var \Magento\Catalog\Model\ResourceModel\Product\Collection $result
* @var \Magento\CatalogWidget\Block\Product\ProductsList $subject
*/// if there's a sort_by attribute defined, add a sort to the collectionif($subject->hasData('sort_by')){// if there's a direction given, check and use that otherwise use the default
$direction = strtoupper($subject->getData('sort_direction'));if(!in_array($direction,[Select::SQL_DESC,Select::SQL_ASC])){
$direction =Select::SQL_DESC;}
$result->setOrder($subject->getData('sort_by'), $direction);}return $result;}}
Dies ist ein guter Anfang, aber der Administrator erlaubt es nicht, Attribute ganz einfach manuell zu einer Widget-Definition hinzuzufügen. Also fügen wir auch dafür eine Definition hinzu.
In etc/widget.xmlwir tun:
<?xml version="1.0" encoding="UTF-8"?><widgetsxmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Widget:etc/widget.xsd"><widgetid="products_list"><parameters><parametername="sort_by"xsi:type="text"required="false"visible="true"><labeltranslate="true">Attribute to sort the products by</label></parameter><parametername="sort_direction"xsi:type="select"visible="true"required="false"source_model="Elastomatic\SortCatalogWidget\Model\Config\Source\Direction"><labeltranslate="true">Sort direction</label></parameter></parameters></widget></widgets>
Aaand voila! Das Sortieren für das Katalog-Widget ist jetzt möglich. Ich könnte irgendwann eine Dropdown-Liste für das Produktattributfeld anstelle der frei eingegebenen Eingabe im Modul hinzufügen, aber dies dient vorerst meinem Zweck.
Da das Magento-Widget für Kataloglistenprodukte das Sortieren nach Position nicht unterstützt, habe ich das oben genannte Modul installiert, aber die Produkte werden nicht nach Positionsreihenfolge aufgelistet. Bitte leiten Sie mich, wie Sie diese Arbeit gemacht haben.
Siva
Die Anzeige der Produkte hängt jedoch vom Produkt-ID-Wert anstelle der Position ab.
Siva
1
Hier ist eine Lösung, wenn Rians Antwort für Sie nicht funktioniert:
Richtig, so alte Frage, aber relevant für mich. Leider gab es keine Antwort, also musste ich sie selbst reparieren und herausfinden, dass ich die Frage beantworten werde, während ich dabei bin.
Ich werde die Arbeit hier dokumentieren, aber das gesamte Modul ist unter https://github.com/rianorie/magento2-sortcatalogwidget verfügbar .
Zuerst habe ich mich im Katalogwidget-Modul in Magento umgesehen und gefunden
\Magento\CatalogWidget\Block\Product\ProductsList::createCollection
. Dies bestätigt, dass keine Sortierfunktion verfügbar ist. Also kommt ein Plugin:Dies ist ein guter Anfang, aber der Administrator erlaubt es nicht, Attribute ganz einfach manuell zu einer Widget-Definition hinzuzufügen. Also fügen wir auch dafür eine Definition hinzu.
In
etc/widget.xml
wir tun:Aaand voila! Das Sortieren für das Katalog-Widget ist jetzt möglich. Ich könnte irgendwann eine Dropdown-Liste für das Produktattributfeld anstelle der frei eingegebenen Eingabe im Modul hinzufügen, aber dies dient vorerst meinem Zweck.
quelle
Hier ist eine Lösung, wenn Rians Antwort für Sie nicht funktioniert:
Ersetzen Sie die Leitung
mit
und das Modul sollte wie erwartet funktionieren.
Das aktualisierte Magento 2-Modul ist hier verfügbar: https://github.com/Bitpolar-Tech/module-sort-catalog-widget
quelle