Produk dan set atribut yang dapat dikonfigurasi

18

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 $simpleProductIdsadalah 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.

Marius
sumber

Jawaban:

13

Setelah bertanya sekitar ini adalah alasan saya punya. Semoga ini memuaskan bagi Anda, meskipun mungkin itu yang Anda harapkan.

  1. Antarmuka adminhtml dibuat dengan maksud untuk mempersulit pedagang untuk benar-benar mengacaukannya.

Karena itu banyak fitur yang disediakan oleh Magento sebagai Kerangka tidak mungkin melalui antarmuka pengguna.
Alasan mengapa hanya produk dalam set atribut yang sama yang dapat dipilih sebagai produk sederhana terkait untuk dapat dikonfigurasi adalah karena itulah yang ada dalam spesifikasi.
Seperti yang Anda katakan, itu masuk akal seperti itu.

  1. Alasan lain adalah memikirkan tujuan set atribut. Salah satu alasan mereka ada adalah untuk mengurangi jumlah atribut dan opsi yang harus dimuat dan diproses selama permintaan. Menerapkan pemikiran ini ke dalam konfigurasi sangat masuk akal, karena ini adalah jenis produk yang relatif mahal.

Karena backend dibangun dengan cara itu, logika frontend untuk dapat dikonfigurasi tidak pernah diharapkan untuk berurusan dengan produk sederhana dari set atribut yang berbeda.
Karena itulah pembatasan tidak diterapkan sepenuhnya di sana.

Mungkin akan mudah untuk membuat konfigurasi dapat bekerja dengan simples dari set atribut yang berbeda. Itu tidak dimaksudkan seperti itu.

Saya tidak bertanya lebih lanjut dan tidak melihat diri saya untuk melihat interaksi kode apa yang menghasilkan hasil aneh di frontend. Mungkin itu tidak penting, karena jika saya mengerti Anda dengan benar di mana meminta alasan di balik keputusan untuk mengecualikan produk-produk sederhana dari set atribut berbeda dengan yang dapat dikonfigurasi, bukan penjelasan kode.

Vinai
sumber
Vinai terima kasih. Saya berharap jauh di dalam pikiran saya untuk alasan "pikiran bertiup". Pasti menyenangkan :). Ini penjelasan yang memuaskan. Adapun "hasil aneh", tidak perlu menggali kode. Saya akan melakukan itu ketika saya akan bosan. Saya masih memiliki dump DB dan cara untuk mereproduksi hasil yang sama. Kemungkinan besar karena saya mengacaukan langsung dalam database. Saya akan memposting hasil ketika / jika saya akan menemukannya.
Marius
2
Tsk tsk, @Marius - jangan sentuh db;)
philwinkle
4
@ philwinkle. Saya tahu, saya tahu, alam semesta akan meledak jika melakukannya. Apa yang bisa kukatakan? Saya suka hidup berbahaya. Dalam pembelaan saya, saya berkata "jangan coba ini di server langsung".
Marius
1
Masih menunggu pikiran saya meledak, juga ... :)
Vinai
2

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.

Pemrograman Terjadwal
sumber
1
Terima kasih atas tanggapannya (dan rekomendasi ekstensi) tetapi ini tidak menjawab pertanyaan saya. Saya mengatakan bahwa saya telah berhasil menyelesaikan masalah saya dengan mengubah database secara langsung. Saya tahu saya tidak seharusnya melakukan itu tetapi saya memiliki pengetahuan yang baik tentang apa yang saya lakukan - dan cadangan basis data :). Saya hanya ingin tahu mengapa pembatasan ini ada. Sejauh "Varien devs tidak melihat kebutuhan" Saya merasa Anda salah. Jika Anda menerapkan batasan itu harus menjadi alasan untuk itu.
Marius