Hari ini saya telah mengetuk opsi navigasi berlapis yang tidak didasarkan pada atribut. Ini untuk peringkat sehingga ujung depan dapat menunjukkan bintang mengkilap yang bagus.
Untuk melakukan ini saya punya:
- Membuat modul
Tulis ulang catalog_block_layer_view
<blocks> <catalog> <rewrite> <layer_view>Bob_Catalog_Block_Layer_View</layer_view> </rewrite> </catalog> </blocks>
Membuat kelas bernama Bob_Catalog_Block_Layer_View yang meluas Mage_Catalog_Block_Layer_View
- Dibuat _initBlocks (), getFilters () dan _prepareLayout () untuk mengganti metode kelas induk. Ini semua memanggil kelas induk di beberapa titik dan kemudian menambahkan atau menambahkan data tambahan ke apa yang dikembalikan.
- Buat blok filter Bob_Catalog_Block_Layer_Filter_Rating yang meluas Mage_Catalog_Block_Layer_Filter_Abstrak dengan konstruktor yang menetapkan filterModelName dan memanggil induknya dan kemudian menetapkan templat kustom seperti yang terlihat Mage_Catalog_Block_Layer_Filter_Abstrak memiliki nama templat yang dibuat di hardcoded pada konstruksinya.
- Buat model Bob_Catalog_Model_Layer_Filter_Rating yang meluas Mage_Catalog_Model_Layer_Filter_Abstrak dan menerapkan berlaku (), getName (), _getItemsData ().
Ini semua berfungsi dengan baik. Bintang-bintang mengilap bagus ditampilkan di nav berlapis.
Saya punya firasat bahwa saya kehilangan sesuatu karena ketika datang ke template keadaan lapisan saya harus meletakkan kondisional di sana untuk mengambil filter peringkat kustom dan mengubah tata letak. Juga beberapa hal yang perlu saya lakukan (mengklon koleksi produk sehingga acara beban tidak mengacaukan jumlah koleksi pada pagination) membuat saya merasa seperti saya telah berenang ke atas bukit.
Jadi pertanyaannya adalah apakah ada di antara Anda yang punya saran lebih baik (atau mungkin posting blog mengedipkan mata ) tentang cara membuat filter navigasi berlapis yang didukung atribut non-atribut?
Terima kasih sudah membaca,
Si