2015-07-29 8 views
5

Próbuję ustalić, czy istnieje sposób zintegrowania filtrowania opartego na lokalizacji z katalogami wyszukiwania Magento &.Dynamiczne obliczanie atrybutu w Magento

Aby umieścić powyższe w kontekście, mój przypadek użycia wygląda następująco: Produkty mają atrybuty szerokości i długości geograficznej, ponieważ znajdują się w całym kraju. Chcę, aby klienci mogli filtrować produkty według lokalizacji względem ich lokalizacji.

Udało mi się pomyślnie zaimplementować niestandardową stronę wyszukiwania, aby uzyskać wyszukiwanie lokalizacji, ale brakuje jej wszystkich innych możliwości filtrowania/wyszukiwania w Magento. Idealnym scenariuszem jest, aby lokalizacja była dynamicznie obliczaną zmienną, ale nie jestem pewien, jak to zrobić, lub czy jest to opłacalne w Magento.

Z góry dziękujemy za wszelkie sugestie!

Odpowiedz

2

Na początek można spróbować coś takiego:

  1. utworzyć atrybut produktu distance_from_customer, domyślną wartość 0, sączącej się w warstwowej nawigacji
  2. utworzyć obserwatora na razie catalog_product_collection_load_after, które zmienią każdy produkt na distance_from_customer atrybut w załadowanej kolekcji na podstawie lokalizacji klienta za każdym razem, gdy ładujesz kolekcję produktów (w widoku kategorii na przykład)
  3. rozszerzyć warstwową nawigację, aby wyłączyć sortowanie/Filtrowanie na podstawie distance_from_customer jeśli jest tylko jedna wartość domyślna (0)

W tym rozwiązaniu distance_from_customer zawsze będzie 0 w bazie danych, tylko zostanie zmieniony w obiekcie kolekcji produkt przed pokazaniem na frontend oraz sortowania/filtrowania opcja zostanie ukryta, jeśli aplikacja nie uzyskała danych o lokalizacji klienta.

+0

Oczywiście może to być trochę kosztowne, ponieważ musisz dwukrotnie ładować kolekcję produktów zamiast tylko raz i przeliczać wszystkie odległości dla każdego produktu i stosować je. – bogatyrjov

+0

Dziękuje człowieku, wydaje mi się solidny, spróbuję i opublikuję każdą informację zwrotną, którą wymyślę! –