Zasadniczo utworzyłem kategorię „Produkty w wyprzedaży”, które chciałbym automatycznie zawierać w moim katalogu wszystkie produkty, do których zastosowano specjalną cenę (poprzez Katalog> Zarządzaj produktami). Chciałbym, aby strona zachowała warstwowe możliwości nawigacji i sortowania , które zawiera standardowa strona kategorii Magento.
Wydaje się, że jest to coś, co byłoby cenne dla większości użytkowników Magento, i jestem zaskoczony, że nie jest częścią podstawowej funkcjonalności.
Próbowałem ponad tuzina odpowiedzi Stack Exchange, postów na blogu i forów i jak dotąd nic nie działało. Czy ktoś ma programowe rozwiązanie tego problemu?
=== EDYCJA ===
Opierając się na krytyce @ pspahn w poniższych komentarzach, postanowiłem zastosować alternatywną metodę osiągnięcia podobnej funkcjonalności. Powiedziawszy to, jeśli jesteś zainteresowany realizacją tej linii, @ sander-mangel opisuje metodę, która wydaje się całkowicie wykonalna.
źródło
Odpowiedzi:
Najłatwiejszym sposobem na to jest utworzenie niestandardowego rozszerzenia współpracującego z Obserwatorem i Cronjob.
Utwórz kategorię dla produktów sprzedaży. W ten sposób możesz używać normalnych funkcjonalności Magento w interfejsie, takich jak nawigacja warstwowa itp.
Aby automatycznie otrzymać produkty z tej kategorii, skorzystamy z obserwatora i kumpla. Obserwator będzie obserwował
catalog_product_save_after
zdarzenie, które zostanie wywołane, gdy produkt zostanie zapisany w wewnętrznej bazie danych. Gdy tak się stanie, możesz sprawdzić datęspecial_price
,special_price_from
datę ispecial_date_to
datę, aby określić, czy musisz umieścić produkt w kategorii sprzedaży, czy go usunąć.Koleżanka jest na specjalne okazje i do tej pory. Każdej nocy po północy najpierw opróżnij kategorię sprzedaży wszystkich produktów. Następnie skorzystaj z kolekcji, aby wyszukać wszystkie produkty, które mają specjalną cenę i mieszczą się w specjalnej cenie od i do tej pory. Jeśli tak, przenieś je do tej kategorii sprzedaży.
źródło
Rozwiązanie oferowane przez @SanderMangel jest na najwyższym poziomie. Mogę pomóc rozwinąć tę kwestię za pomocą kodu, którego obecnie używam w moim module Produkty kategorii automatycznej / dynamicznej - która ma możliwość wykonywania reguł kategorii produktów na specjalnych
Kod dostosowuje standardową kolekcję produktów, aby uzyskać wszystkie produkty ze specjalną ceną w dniu uruchomienia kodu. Możesz użyć tego w cronie, aby ponownie wypełnić kategorie o 00:00 i upewnić się, że będą aktualne.
Zauważ, że kod jest pobierany z większego modułu, dlatego skompresowałem tutaj odpowiednie części. Może istnieć zmienna lub dwie, które nie są reprezentowane w wyciągu thsi, ale można je łatwo wydedukować lub po prostu zapytać :)
Obiekt $ category to faktyczna kategoria, która ma zawierać produkty. Poniższy kod pozwoli ci również określić rabat w wartości% :)
Należy zauważyć, że kolekcja nie zwróci produktów, ponieważ zawiera linki do normalnych tabel linków do katalogu <-> produktów. Ponieważ nie jesteś zainteresowany obecnymi połączonymi produktami, musisz usunąć tę relację tabeli z kolekcji.
Używam następującego kodu, aby to zrobić:
jako dodatkowy bonus, możesz użyć tej samej teorii do dostosowania kolekcji produktów z katalogu i znaleźć produkty, które są w trybie specjalnym ze względu na reguły katalogu:
Gdy masz już działającą kolekcję, wszystko, co musisz zrobić, to pobrać wszystkie identyfikatory z kolekcji, odwrócić tablicę i użyć
$category->setPostedProducts($products);
oraz $ category-> save () l; aby zakończyć aktualizację.Dla kompletności, oto mój codzienny cron, który aktualizuje kategorie dynamiczne. (znowu odnosi się do metod nieuwzględnionych tutaj, ale jestem pewien, że poprowadzi cię we właściwym kierunku
Baw się dobrze :)
ref: http://www.proxiblue.com.au/magento-dynamic-category-products.html
źródło
Oto kolekcja, która powinna dać ci zestaw wyników wszystkich specjalnych produktów cenowych w twoim katalogu, które możesz wyświetlić na jednej stronie
Można to zrobić na kilka sposobów: utwórz nowy moduł, który ma własny kontroler, blok i model bardzo podobny do modułu kategorii Mag lub przesłonisz moduł kategorii Mag, aby uruchomić powyższą kolekcję tylko wtedy, gdy klient wybierze kategorię specjalną. Można to łatwo skonfigurować w systemie -> konfiguracja modułu.
Jeśli możesz wydać kilka funtów, polecam następujące rozszerzenie Magento Connect
Dla Magento 1 -:
http://www.magentocommerce.com/magento-connect/dynamic-sale-category.html ( http://www.scommerce-mage.co.uk/magento-dynamic-sale-category.html )
Dla Magento 2 -:
https://www.scommerce-mage.com/magento2-dynamic-sale-category.html
Mam nadzieję, że to pomoże!
Pozdrawiam S.
źródło
Stworzyłem rozszerzenie dla Magento 2, które wyświetla specjalne produkty pod własnym kontrolerem z nawigacją warstwową. Więc nie ma potrzeby kategorii ani crona.
https://github.com/DominicWatts/Special
Mam nadzieję, że to komuś pomoże
źródło