TL; DR : Apakah ada alasan mengapa produk sederhana yang terkait dengan produk yang dapat dikonfigurasi harus dalam atribut yang sama dengan produk yang dapat dikonfigurasi itu sendiri? Maksud saya, apakah ada alasan teknis ? Saya tahu alasan "akal sehat". Jika Anda menjual sepasang sepatu maka semua versi tergantung pada warna dan ukuran harus sepatu juga.
Versi panjang : Saya punya tugas untuk "menggabungkan" beberapa produk yang dapat dikonfigurasi. Maksud saya dari 2 atau lebih hanya membuat satu. Saya tidak ingin melakukannya secara manual karena jumlah produk dan saya tidak ingin melewatinya$product->load(..)->set...()->save()
karena jumlah waktu yang diperlukan untuk menjalankan skrip. Jadi saya hentikan proses karena saya yakin tidak ada produk sederhana yang tumpang tindih. Ada kombinasi unik antara ukuran dan warna. Saya melakukan ini:
Mage::getResourceSingleton('catalog/product_type_configurable')
->saveProducts($mainConfigrableProduct, $simpleProductIds);
di mana $simpleProductIds
adalah array dari semua id produk sederhana yang terkait dengan semua produk yang dapat dikonfigurasi yang perlu digabungkan.
Ini berfungsi dengan baik untuk sebagian besar produk, tetapi ada beberapa yang memiliki masalah.
Jika saya menelepon
$productIds = $product->getTypeInstance()->getUsedProductIds()
Saya akan mendapatkan semua id produk sederhana, tetapi di backend hanya beberapa yang muncul. Setelah menggali selama beberapa waktu saya menemukan bahwa satu-satunya yang ditampilkan adalah yang dalam atribut yang sama ditetapkan sebagai produk yang dapat dikonfigurasi. Set atribut lainnya sangat mirip dengan yang pertama, hanya beberapa perbedaan kecil tetapi berisi atribut yang dapat dikonfigurasi (ukuran dan warna).
Dan sekarang yang aneh. Di frontend saya berharap melihat semua produk ($ productIds dalam kode di atas) atau hanya produk dalam set atribut yang sama. Ya ada sesuatu di antara keduanya.
- 20 id produk terkait - 5 ukuran, 4 warna
- 10 produk terkait di backend - 5 ukuran, 2 warna - 2 warna lainnya (10 produk) berada dalam set atribut yang berbeda
- 15 kombinasi di frontend - 5 ukuran 3 warna (???)
Saya bisa menyelesaikan masalah dengan mengubah set atribut untuk produk yang tidak muncul, tapi saya masih bingung.
Catatan : Jangan coba ini di rumah. Atau Anda dapat mencobanya di rumah tetapi tidak di server langsung.
Kami menggunakan ekstensi yang disebut RapidFlow by Unirgy (yang saya tidak bisa merekomendasikan sangat cukup) untuk impor dan ekspor. Salah satu fitur dalam versi Pro memungkinkan perubahan set atribut. Lain adalah penciptaan produk melalui impor CSV. Kadang-kadang kami membuat produk-produk sederhana baru untuk dapat dikonfigurasi, dan kadang-kadang secara tidak sengaja produk-produk sederhana tersebut memiliki set atribut yang berbeda dari orang tua mereka.
Rapidflow akan dengan senang hati mengimpor produk ini, dan mengubah set atribut. Kami cenderung tidak senang dengan hasilnya. Produk yang dapat dikonfigurasikan yang dikonfigurasikan oleh atribut di luar set atributnya gagal di-render di admin produk dan harus diperbaiki. Jika kami tidak mengubah rangkaian atribut dari orang tua, seperti yang telah Anda catat, anak-anak hanya gagal dikaitkan dengan orang tua mereka. Mereka ada sebagai entitas Magento, dapat diedit, tetapi tidak akan muncul sebagai anak-anak di halaman produk ujung depan, atau daftar produk yang terkait dengan orang tua yang dapat dikonfigurasi.
Jadi, dari sudut pandang teknis murni, dimungkinkan untuk produk sederhana berada di set atribut yang berbeda dari induknya. Tetapi karena perilaku ini tidak didukung, bahkan di EE, dan jadi Occam's Razor mengatakan bahwa ketika mereka mendesain Magento para deven Varien tidak melihat kebutuhan.
sumber