Kami memiliki persyaratan, di mana pelanggan akan diizinkan untuk menambahkan hanya satu produk ke keranjang sekaligus. Namun dia dapat menambahkan jumlah produk itu.
Bagaimana saya bisa mencegah suatu produk menambah keranjang jika sudah ada produk dalam keranjang?
Bisakah seseorang membantu dalam hal ini?
product
cart
magento-1.8
Shathish
sumber
sumber
checkout_cart_product_add_before
sana, mis. Markshust.com/2012/Jawaban:
Peristiwa
catalog_product_type_prepare_full_options
dancatalog_product_type_prepare_lite_options
adalah teman AndaKemudian di kelas Observer Anda
sumber
catalog_product_type_prepare_lite_options
adalah yang pertama bagi saya! dilakukan dengan baik.Alih-alih menulis ulang controller (tolong oh jangan lakukan itu), alih-alih, tulis ulang
addProduct
metode untuk memperhitungkan batas:Jika Anda ingin menjadi mewah, ganti yang di
1
atas denganMage::getStoreConfig('checkout/options/max_cart_qty)
dan atur config.xml berikut modul Anda:Nilai itu sekarang dikendalikan melalui nilai XML. Jika Anda ingin benar-benar mewah , tambahkan ini ke system.xml dari modul baru Anda:
Ingatlah bahwa Anda perlu mengatur a
<depends>Mage_Checkout</depends>
ke modul Anda untuk mendukung konfigurasi sistem yang sudah ditentukan sebelumnya.sumber
Cara yang mungkin adalah menulis ulang addAction dari Mage_Checkout_CartController.
Jadi periksa apakah sudah ada produk dalam keranjang dan jika ya tunjukkan pesan kesalahan yang sesuai. Jika tidak, Anda dapat memanggil metode induk yang sedang melakukan proses add-lengkap:
sumber
$this->_goBack();
tidak berfungsi! Saya masuk ke kondisi if tetapi produk masih ditambahkan.Saya pikir Anda dapat menggunakan pengamat dan acara berikut akan berguna untuk memeriksa kondisi yang Anda inginkan. (Mungkin beberapa acara mungkin tidak dalam versi Magento yang Anda gunakan).
sumber
checkout_cart_product_add_after
acara, pertanyaannya adalah bagaimana saya bisa mencegah produk agar tidak ditambahkan ke troli?Mungkin sedikit ide lapangan kiri tapi bagaimana kalau menggunakan
catalog_product_is_salable_after
acara?Apa yang dapat Anda lakukan di sini adalah memeriksa untuk melihat apakah produk ada di dalam kereta atau jika ada produk lain di dalam kereta. Ketika ada produk lain dalam kereta memperbarui atribut 'is_salable' dari objek 'laku' yang diteruskan ke pengamat ke false.
Perhatikan bahwa ini belum diuji dan hanya sebuah gagasan. Ini akan gagal jika template Anda tidak memeriksa
$product->isSaleable()
sebelum menampilkan tombol. Itu juga hanya akan menghapus tombol dan tidak benar-benar menghentikan proses add jika pengguna dapat menebak url.sumber
Saya tahu topik ini adalah sesuatu yang lama, tetapi saya memiliki masalah yang sama. Saya hanya ingin satu item dalam keranjang dan jika pelanggan menambahkan yang baru, saya ingin mengganti yang lama dengan yang baru. Jadi saya mengganti addAction (dijelaskan di sini seperti ini:
}
sumber