2015-07-29 8 views
5

Sto cercando di capire se c'è un modo per integrare il filtro basato sulla posizione nel catalogo Magento & pagine di ricerca.Calcola dinamicamente l'attributo in Magento

Per posizionare quanto sopra nel contesto il mio caso d'uso è il seguente: I prodotti hanno attributi di latitudine e longitudine in quanto si trovano in tutto il paese. Quello che voglio che i clienti siano in grado di fare è filtrare i prodotti in base alla posizione in relazione alla loro posizione.

Sono riuscito a implementare correttamente una pagina di ricerca personalizzata per ottenere la ricerca della posizione, ma manca di tutte le altre funzionalità di filtro/ricerca presenti in Magento. Lo scenario ideale è che la posizione sia una variabile calcolata dinamicamente, tuttavia non sono sicuro su come procedere, o se è ancora praticabile in Magento.

Grazie in anticipo per eventuali suggerimenti!

risposta

2

Per cominciare, si può provare qualcosa di simile:

  1. creare un attributo di prodotto distance_from_customer, valore di default 0, filtrabile in navigazione a strati
  2. creare un osservatore per l'evento catalog_product_collection_load_after, che cambierà ogni singolo prodotto di distance_from_customer attributo nella raccolta caricata in base alla posizione del cliente ogni volta che si carica una raccolta di prodotti (nella vista categoria ad esempio)
  3. estendere la navigazione a livelli per disabilitare l'ordinamento/filtraggio riferiscono al distance_from_customer se v'è un solo valore di default (0)

In questa soluzione distance_from_customer sarà sempre 0 nel database, verrà modificata solo nell'oggetto raccolta prodotto prima visualizzazione sulla frontend e la selezione/filtraggio l'opzione sarà nascosta se l'applicazione non riesce a ottenere i dati sulla posizione del cliente.

+0

questo può ovviamente essere un po 'costoso, perché è necessario caricare la raccolta di prodotti due volte ogni volta anziché solo una volta + ricalcolare tutte le distanze per ciascun prodotto e applicarle. – bogatyrjov

+0

Grazie amico, mi sembra solido, farò un tentativo e postare qualsiasi feedback che mi viene in mente! –