Benutzerdefinierte nicht attributbasierte Schichtnavigation. Ist dies der einzige Weg, dies zu tun?

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

  •  16-10-2019
  •  | 
  •  

Frage

Heute habe ich eine geschichtete Navigationsoption geklopft, die nicht auf einem Attribut basiert. Es ist für Bewertungen, so dass das vordere Ende schöne glänzende Sterne zeigen kann.

Um dies zu tun, habe ich:

  1. Ein Modul erstellt
  2. Umgeschrieben Catalog_Block_Layer_View

    <blocks>        
      <catalog>
        <rewrite>
          <layer_view>Bob_Catalog_Block_Layer_View</layer_view>
         </rewrite>                
       </catalog>
    </blocks>
    
  3. Erstellt eine Klasse namens bob_catalog_block_layer_view, die mage_catalog_block_layer_view erweitert

  4. Erstellt _initblocks (), getFilters () und _preparelayout (), um die übergeordneten Klassenmethoden zu überschreiben. Diese alle rufen die übergeordnete Klasse irgendwann an und bereiten dann entweder zusätzliche Daten an das vor, was zurückgegeben wird.
  5. Erstellen Sie einen Filterblock bob_catalog_block_layer_filter_rating, der mage_catalog_block_layer_filter_abstract mit einem Konstruktor erweitert, der den filtermodelnamen und seinen übergeordneten Anweisungen setzt, und dann ein benutzerdefiniertes Vorlagen festgelegt, wie es scheinbar magaCatalog_block_block_layer_filter_filter_abstract ist.
  6. Erstellen Sie ein Modell bob_catalog_model_layer_filter_rating, das mage_catalog_model_layer_filter_abstract erweitert und applements (), getName (), _getIsemdata ().

Das alles funktioniert gut. Die netten glänzenden Sterne zeigen sich in der geschichteten NAV.

Ich habe das Bauchgefühl, dass mir etwas fehlt, denn wenn es um die staatliche Schablone der Ebene geht, musste ich eine Bedingung dort einsetzen, um den benutzerdefinierten Bewertungsfilter aufzunehmen und das Layout zu ändern. Auch einige der Dinge, die ich tun musste (klonen Sie die Produktsammlung, damit das Last -Ereignis die Sammlung nicht auf der Paginierung zerstört), geben mir das Gefühl, dass ich den Hügel hinauf geschwommen habe.

Die Frage ist also, dass einer von Ihnen bessere Vorschläge erhalten (oder vielleicht einen Blog -Beitrag zwinkern) Wie erbaut man einen benutzerdefinierten nicht-attributartigen, geschichteten Navigationsfilter?

Danke fürs Lesen,

Si

War es hilfreich?

Lösung

Es gibt eine andere Möglichkeit, Ihrem Produkt ein normales Attribut hinzuzufügen, das die Bewertung darstellt. Verwenden Sie dann einen Beobachter (ich weiß nicht, wie diese Bewertung gebildet wird), um das Attribut des Produkts zu aktualisieren. Oder, wenn ein Beobachter keine Option ist, verwenden Sie möglicherweise einen Cronjob, der dieses Attribut für jedes Produkt alle x Minuten aktualisiert, je nachdem, wie schwer das Skript ist.

Auf diese Weise gibt es kein Magento -Umschreiben und Veränderungen, alle Navigationsmodule funktionieren weiterhin und es ist einfacher zu pflegen.

Natürlich ist die Frage, ist dies eine Option für Sie? Woher kommen die Bewertungen?

BEARBEITEN Sie müssten die Sterne mit JavaScript stylen oder den Attributnamen in der Vorlage überprüfen.

Andere Tipps

Ich graben in den Code und fand keine Veranstaltung. Ohne zusätzliche Attribute hinzuzufügen, gibt es nichts ohne zu machen <rewrite>

Sie müssen Ihren Block hinzufügen \Mage_Catalog_Block_Layer_View::_prepareLayout() Vor dem apply() (Wenn nicht, könnten Sie verwenden core_block_abstract_prepare_layout_after.

Und Sie müssen es hinzufügen \Mage_Catalog_Block_Layer_View::getFilters() Und es gibt auch keine Veranstaltung.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top