Personalizzato non attributo base di navigazione a strati. È questo l'unico modo per farlo?

magento.stackexchange https://magento.stackexchange.com/questions/328

  •  16-10-2019
  •  | 
  •  

Domanda

Oggi sono stato a bussare un'opzione di navigazione più livelli che non si basa su un attributo. E 'per le valutazioni in modo che il front-end in grado di mostrare belle stelle lucenti.

Per fare questo ho:

  1. Creato un modulo
  2. Riscritta catalog_block_layer_view

    <blocks>        
      <catalog>
        <rewrite>
          <layer_view>Bob_Catalog_Block_Layer_View</layer_view>
         </rewrite>                
       </catalog>
    </blocks>
    
  3. Creato una classe chiamata Bob_Catalog_Block_Layer_View che si estende Mage_Catalog_Block_Layer_View

  4. _initBlocks creati (), getFilters () e _prepareLayout () per sovrascrivere i metodi di classi genitore. Questi tutti chiamata la classe padre ad un certo punto e poi o anteposta o dati aggiuntivi allegati a ciò che viene restituito.
  5. Crea una Bob_Catalog_Block_Layer_Filter_Rating blocco di filtraggio che si estende Mage_Catalog_Block_Layer_Filter_Abstract con un costruttore che imposta il filterModelName e chiama il suo genitore e quindi imposta un modello personalizzato come sembra Mage_Catalog_Block_Layer_Filter_Abstract ha il nome del modello hardcoded nel suo costruttore.
  6. Creare un modello Bob_Catalog_Model_Layer_Filter_Rating che si estende Mage_Catalog_Model_Layer_Filter_Abstract e attrezzi applicare (), getName (), _getItemsData ().

Questo funziona tutto bene. Le belle stelle lucenti mostrano nel nav strati.

Ho un istinto che mi manca qualcosa, perché quando si tratta di modello di stato layer che ho dovuto mettere un condizionale in là per raccogliere il filtro voto personalizzato e modificare il layout. Anche alcune delle cose che ho bisogno di fare (clone della collezione prodotto in modo che l'evento carico non rovinare i conteggi di raccolta sul impaginazione) mi fanno sentire come se avessi nuotato in salita.

Quindi la domanda è Qualcuno di voi ha qualche suggerimento migliore (o forse un post sul blog occhiolino ) su come costruire un non-attributo personalizzato sostenuta filtro di navigazione a strati?

Grazie per la lettura,

Si

È stato utile?

Soluzione

C'è un altro modo di farlo, si potrebbe aggiungere un attributo normale per il prodotto che sarebbe il voto. Quindi utilizzare un osservatore (non so come si forma questa valutazione) per aggiornare l'attributo del prodotto. O, se un osservatore è alcuna opzione, forse utilizzare un cronjob che aggiorna quell'attributo per ogni prodotto ogni x minuti a seconda di quanto pesante la sceneggiatura è.

In questo modo non v'è alcuna Magento riscrittura e la modifica in questione, tutti i moduli di navigazione continuerà a funzionare ed è più facile da mantenere.

Naturalmente la domanda è: è questa un'opzione per voi? Da dove vengono i feedback vengono?

Modifica si dovrà stile le stelle utilizzando javascript o controllo sul nome dell'attributo nel modello.

Altri suggerimenti

I scavata nel codice e non ha trovato evento. Senza aggiungere attributi extra non c'è nulla da fare, senza <rewrite>

È necessario aggiungere la blocco nel \Mage_Catalog_Block_Layer_View::_prepareLayout() prima della apply() (se non si poteva usare core_block_abstract_prepare_layout_after.

E avete bisogno di aggiungerlo al \Mage_Catalog_Block_Layer_View::getFilters() e non c'è nessun caso troppo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a magento.stackexchange
scroll top