Grundsätzlich habe ich eine Kategorie "Produkte zum Verkauf" erstellt, in der ich automatisch alle Produkte in meinem Katalog aufnehmen möchte , auf die ein Sonderpreis angewendet wurde (über Katalog> Produkte verwalten). Ich möchte, dass die Seite die geschichteten Navigations- und Sortierfunktionen beibehält, die eine Standard-Magento-Kategorieseite enthält.
Es scheint, dass dies für die Mehrheit der Magento-Benutzer von Wert ist, und ich bin überrascht, dass es nicht Teil der Kernfunktionalität ist.
Ich habe über ein Dutzend Stack Exchange-Antworten, -Blog-Posts und -Foren ausprobiert, und bisher hat nichts funktioniert. Hat jemand eine programmatische Lösung dafür?
=== EDIT ===
Basierend auf der Kritik von @ pspahn in den Kommentaren unten habe ich mich für eine alternative Methode entschieden, um ähnliche Funktionen zu erzielen. Wenn Sie an dieser Linie interessiert sind, beschreibt @ sander-mangel eine Methode, die durchaus machbar erscheint.
quelle
Antworten:
Am einfachsten ist es, eine benutzerdefinierte Erweiterung zu erstellen, die mit einem Observer und einem Cronjob zusammenarbeitet.
Erstellen Sie eine Kategorie für die Verkaufsprodukte. Auf diese Weise können Sie die normalen Magento-Funktionen im Frontend wie Layered Navigation usw. verwenden.
Um die Produkte dieser Kategorie automatisch zu erhalten, verwenden wir den Observer und den Cronjob. Der Beobachter beobachtet das
catalog_product_save_after
Ereignis, das ausgelöst wird, wenn ein Produkt im Backend gespeichert wird. In diesem Fall können Sie Datum und Datum überprüfenspecial_price
, um festzustellen, ob Sie das Produkt in die Verkaufskategorie aufnehmen oder von dort entfernen müssen.special_price_from
special_date_to
Der Cronjob ist für das Besondere von und zu Terminen da. Leeren Sie jede Nacht nach Mitternacht zuerst die Verkaufskategorie aller Produkte. Verwenden Sie dann eine Sammlung, um alle Produkte abzurufen, die einen Sonderpreis haben und unter das Sonderangebot von und nach Datum fallen. Wenn ja, verschieben Sie sie in diese Verkaufskategorie.
quelle
Die von @SanderMangel angebotene Lösung ist erstklassig. Ich kann dazu beitragen, dies mit einem Code zu erweitern, den ich derzeit in meinem Modul Automated / Dynamic Category-Produkte verwende - das die Möglichkeit bietet, Kategorieregeln für bestimmte Produkte zu erstellen
Der Code passt eine Standardproduktkollektion an, um alle Produkte mit einem Sonderpreis zu erhalten, der an dem Tag festgelegt wird, an dem der Code ausgeführt wird. Sie können dies im Cron verwenden, um die Kategorien um 00:00 Uhr neu aufzufüllen und sicherzustellen, dass sie auf dem neuesten Stand sind.
Beachten Sie, dass der Code aus einem größeren Modul extrahiert wird. Daher habe ich die relevanten Teile hier für Sie komprimiert. Es kann eine oder zwei Variablen geben, die in diesem Auszug nicht enthalten sind, aber sie lassen sich leicht ableiten, oder fragen Sie einfach :)
Das $ category-Objekt ist die tatsächliche Kategorie, die die Produkte enthalten soll. Mit dem folgenden Code können Sie den Rabatt auch in% angeben :)
Nun ist zu beachten, dass die Sammlung keine Produkte zurückgibt, da sie Links zu den normalen Katalog- <-> Produktlink-Tabellen enthält. Da Sie nicht an den aktuell verknüpften Produkten interessiert sind, müssen Sie diese Tabellenbeziehung aus der Sammlung löschen.
Ich benutze den folgenden Code, um das zu erledigen:
Als zusätzlichen Bonus können Sie dieselbe Methode zum Anpassen der Katalogproduktsammlung verwenden und Produkte suchen, die sich aufgrund von Katalogregeln im Spezialmodus befinden:
Sobald Sie die funktionierende Sammlung haben, müssen Sie nur noch alle IDs aus der Sammlung abrufen, das Array umdrehen und verwenden
$category->setPostedProducts($products);
und ein $ category-> save () l; um das Update abzuschließen.Der Vollständigkeit halber ist hier mein täglicher Cron, der die dynamischen Kategorien auf dem neuesten Stand hält. (Wiederum bezieht es sich auf Methoden, die hier nicht enthalten sind, aber ich bin sicher, dass Sie damit in die richtige Richtung gelangen
Habe Spaß :)
ref: http://www.proxiblue.com.au/magento-dynamic-category-products.html
quelle
Hier ist die Sammlung, die Ihnen die Ergebnisse aller Sonderpreisprodukte in Ihrem Katalog geben soll, die Sie auf einer Seite anzeigen können
Es gibt verschiedene Möglichkeiten, dies zu tun: Erstellen Sie entweder ein neues Modul mit einem eigenen Controller, Block und Modell, das dem Magier-Kategoriemodul sehr ähnlich ist, oder überschreiben Sie das Magier-Kategoriemodul, um die obige Sammlung nur dann auszuführen, wenn der Kunde eine spezielle Kategorie auswählt. Dies kann einfach in der System -> Konfiguration Ihres Moduls konfiguriert werden.
Wenn Sie ein paar Pfund ausgeben können, würde ich die folgende Erweiterung für Magento Connect empfehlen
Für Magento 1 -:
http://www.magentocommerce.com/magento-connect/dynamic-sale-category.html ( http://www.scommerce-mage.co.uk/magento-dynamic-sale-category.html) )
Für Magento 2 -:
https://www.scommerce-mage.com/magento2-dynamic-sale-category.html
Ich hoffe es hilft!
Prost S
quelle
Ich habe eine Erweiterung für Magento 2 erstellt, die Produkte auf einem eigenen Controller mit geschichteter Navigation anzeigt. Also keine Notwendigkeit für Kategorie oder Cron.
https://github.com/DominicWatts/Special
Hoffe das hilft jemandem
quelle