ผลิตภัณฑ์ที่กำหนดค่าได้และชุดคุณลักษณะ


18

TL; DR : มีเหตุผลใดที่ผลิตภัณฑ์แบบง่าย ๆ ที่เชื่อมโยงกับผลิตภัณฑ์ที่สามารถกำหนดค่าได้ต้องอยู่ในชุดคุณลักษณะเดียวกันกับผลิตภัณฑ์ที่กำหนดค่าได้หรือไม่ ฉันหมายถึงมีเหตุผลทางเทคนิคหรือไม่? ฉันรู้เหตุผล "สามัญสำนึก" หากคุณขายคู่ของรองเท้าแล้วทุกรุ่นขึ้นอยู่กับสีและขนาดจะต้องมีรองเท้ายัง
รุ่นยาว : ฉันมีหน้าที่ "รวม" ผลิตภัณฑ์ที่กำหนดค่าได้บางอย่าง ฉันหมายถึงตั้งแต่ 2 ขึ้นไปที่จะทำแค่อันเดียว ฉันไม่ต้องการทำด้วยตนเองเนื่องจากจำนวนผลิตภัณฑ์และฉันไม่ต้องการทำ$product->load(..)->set...()->save()เนื่องจากใช้เวลาในการรันสคริปต์ ดังนั้นฉันจึงลัดวงจรกระบวนการเพราะฉันแน่ใจว่าไม่มีผลิตภัณฑ์ที่เรียบง่ายซ้อนทับกัน มีการผสมผสานขนาดและสีที่เป็นเอกลักษณ์ ฉันทำอย่างนี้:

Mage::getResourceSingleton('catalog/product_type_configurable')
    ->saveProducts($mainConfigrableProduct, $simpleProductIds);

โดยที่$simpleProductIdsเป็นอาร์เรย์ของรหัสผลิตภัณฑ์แบบง่าย ๆ ทั้งหมดที่เกี่ยวข้องกับผลิตภัณฑ์ที่กำหนดค่าได้ซึ่งจำเป็นต้องรวม
สิ่งนี้ทำงานได้อย่างสมบูรณ์แบบสำหรับผลิตภัณฑ์ส่วนใหญ่ แต่มีบางอย่างที่มีปัญหา
ถ้าฉันเรียกว่า

$productIds = $product->getTypeInstance()->getUsedProductIds() 

ฉันจะได้รับรหัสผลิตภัณฑ์ที่เรียบง่าย แต่ในแบ็กเอนด์มีเพียงไม่กี่คนเท่านั้นที่ปรากฏ หลังจากขุดไปสักพักฉันก็พบว่ามีเพียงสิ่งเดียวที่ถูกแสดงคือตัวที่มีคุณสมบัติเหมือนกันกับผลิตภัณฑ์ที่กำหนดค่าได้ ชุดคุณลักษณะอื่น ๆ นั้นคล้ายคลึงกับชุดแรกเพียงความแตกต่างเล็กน้อย แต่มีชุดคุณลักษณะที่กำหนดค่าได้ (ขนาดและสี)
และตอนนี้สิ่งที่แปลก ในส่วนหน้าฉันคาดว่าจะเห็นผลิตภัณฑ์ทั้งหมด ($ productIds ในรหัสด้านบน) หรือเฉพาะผลิตภัณฑ์ในชุดคุณลักษณะเดียวกัน มีบางอย่างระหว่าง

  • รหัสผลิตภัณฑ์ที่เกี่ยวข้อง 20 รหัส - 5 ขนาด 4 สี
  • 10 ผลิตภัณฑ์ที่เกี่ยวข้องในแบ็กเอนด์ - 5 ขนาด, 2 สี - อีก 2 สี (10 ผลิตภัณฑ์) อยู่ในชุดคุณลักษณะที่แตกต่างกัน
  • ชุดค่าผสม 15 ส่วนในส่วนหน้า - 5 ขนาด 3 สี (???)

ฉันสามารถแก้ไขปัญหาได้ด้วยการเปลี่ยนชุดคุณลักษณะสำหรับผลิตภัณฑ์ที่ไม่ปรากฏ แต่ฉันก็ยังงงงวย

หมายเหตุ : อย่าลองทำที่บ้าน หรือคุณสามารถทดลองใช้ที่บ้าน แต่ไม่สามารถใช้งานได้บนเซิร์ฟเวอร์ที่ใช้งานจริง

คำตอบ:


13

หลังจากถามถึงสิ่งนี้เป็นเหตุผลที่ฉันมี หวังว่ามันจะทำให้คุณพึงพอใจแม้ว่ามันจะเป็นอย่างที่คุณคาดไว้ก็ตาม

  1. อินเทอร์เฟซผู้ดูแลระบบถูกสร้างขึ้นด้วยความตั้งใจที่จะทำให้ร้านค้าต้องสับสนโดยสิ้นเชิง

ด้วยเหตุนี้คุณสมบัติหลายอย่างที่วีโอไอพีจัดทำในฐานะ Framework จึงไม่สามารถทำได้ผ่านส่วนต่อประสานผู้ใช้
เหตุผลที่ผลิตภัณฑ์เฉพาะในชุดคุณลักษณะเดียวกันสามารถเลือกได้เนื่องจากผลิตภัณฑ์อย่างง่ายที่เกี่ยวข้องสำหรับการกำหนดค่าได้เนื่องจากเป็นสิ่งที่อยู่ในรายละเอียด
อย่างที่คุณพูดมันทำให้รู้สึกแบบนั้น

  1. อีกเหตุผลหนึ่งก็คือการคิดถึงวัตถุประสงค์ของชุดคุณลักษณะ หนึ่งในเหตุผลที่พวกเขามีอยู่คือการลดจำนวนของคุณสมบัติและตัวเลือกที่จะต้องมีการโหลดและประมวลผลในระหว่างการร้องขอ การนำแนวคิดนี้ไปใช้กับการกำหนดค่าได้เหมาะสมเนื่องจากเป็นประเภทผลิตภัณฑ์ที่มีทรัพยากรค่อนข้างแพง

เนื่องจากแบ็คเอนด์ถูกสร้างขึ้นในลักษณะนั้นตรรกะส่วนหน้าสำหรับการกำหนดค่าไม่เคยคาดว่าจะจัดการกับผลิตภัณฑ์อย่างง่ายจากชุดคุณลักษณะที่แตกต่างกัน
นั่นเป็นเหตุผลว่าทำไมข้อ จำกัด จึงไม่ถูกนำมาใช้อย่างสมบูรณ์

อาจเป็นเรื่องง่ายที่จะทำให้การกำหนดค่าทำงานกับ simples จากชุดคุณสมบัติที่แตกต่างกัน มันไม่ได้ตั้งใจอย่างนั้น

ฉันไม่ได้ขออะไรเพิ่มเติมและไม่ได้มองตัวเองเพื่อดูว่าการโต้ตอบกับโค้ดใดที่ทำให้เกิดผลลัพธ์แปลก ๆ ในส่วนหน้า อาจเป็นเรื่องที่ไม่สำคัญเพราะถ้าฉันเข้าใจคุณอย่างถูกต้องว่าการถามถึงเหตุผลในการตัดสินใจที่จะแยกผลิตภัณฑ์ง่าย ๆ ออกจากชุดคุณลักษณะนั้นแตกต่างไปจากชุดค่าที่กำหนดไม่ใช่รหัสคำอธิบาย


ขอบคุณ Vinai ฉันหวังอย่างลึกล้ำในใจของฉันด้วยเหตุผล คงจะสนุก :) นี่คือคำอธิบายที่น่าพอใจ สำหรับ "ผลลัพธ์ที่แปลก" ไม่จำเป็นต้องขุดในโค้ด ฉันจะทำอย่างนั้นเมื่อฉันจะเบื่อ ฉันยังมีการถ่ายโอนข้อมูลฐานข้อมูลและวิธีการทำซ้ำผลลัพธ์เดียวกัน ส่วนใหญ่อาจเป็นเพราะฉันถูกเกลียวในฐานข้อมูลโดยตรง ฉันจะโพสต์ผลเมื่อ / ถ้าฉันจะหา
Marius

2
Tsk tsk, @Marius - อย่าแตะ db;)
philwinkle

4
@philwinkle ฉันรู้ฉันรู้ว่าจักรวาลจะระเบิดถ้าทำ ฉันจะว่าอย่างไรได้? ฉันชอบที่จะมีชีวิตอยู่อย่างอันตราย ในการป้องกันของฉันฉันพูดว่า "อย่าลองสิ่งนี้บนเซิร์ฟเวอร์สด"
Marius

1
ยังคงรอที่จะทำให้ใจของฉันปลิวไป ... :)
Vinai

2

เราใช้ส่วนขยายที่เรียกว่า RapidFlow โดย Unirgy (ซึ่งฉันไม่สามารถแนะนำได้มากพอ) สำหรับการนำเข้าและส่งออก หนึ่งในคุณสมบัติในรุ่น Pro ช่วยให้สามารถเปลี่ยนชุดคุณสมบัติได้ อีกอย่างคือการสร้างผลิตภัณฑ์ผ่านการนำเข้า CSV บางครั้งเราสร้างผลิตภัณฑ์ง่าย ๆ สำหรับการกำหนดค่าและบางครั้งโดยบังเอิญผลิตภัณฑ์ง่าย ๆ เหล่านั้นมีชุดคุณลักษณะที่แตกต่างจากพ่อแม่

Rapidflow จะนำเข้าผลิตภัณฑ์เหล่านี้อย่างมีความสุขและเปลี่ยนชุดคุณลักษณะ เรามักจะไม่พอใจกับผลลัพธ์ที่ได้ ผลิตภัณฑ์ที่สามารถกำหนดค่าได้ซึ่งกำหนดค่าโดยแอททริบิวต์ภายนอกชุดแอททริบิวต์ของพวกเขาล้มเหลวในการแสดงผลในผู้ดูแลระบบผลิตภัณฑ์และต้องได้รับการซ่อมแซม หากเราไม่เปลี่ยนชุดแอตทริบิวต์ของผู้ปกครองดังที่คุณได้บันทึกไว้เด็ก ๆ ก็ไม่สามารถเชื่อมโยงกับผู้ปกครองได้อย่างถูกต้อง มีอยู่ในเอนทิตี Magento สามารถแก้ไขได้ แต่จะไม่ปรากฏเป็นรายการย่อยในหน้าผลิตภัณฑ์ส่วนหน้าหรือรายการผลิตภัณฑ์ที่เกี่ยวข้องของผู้ปกครองที่กำหนดค่าได้

ดังนั้นจากจุดยืนทางเทคนิคอย่างหมดจดมันเป็นไปได้สำหรับผลิตภัณฑ์ที่เรียบง่ายที่จะอยู่ในชุดคุณลักษณะที่แตกต่างจากพ่อแม่ของพวกเขา แต่เนื่องจากพฤติกรรมนี้ไม่ได้รับการสนับสนุนแม้แต่ใน EE และมีดโกนของ Occam ก็บอกว่าเมื่อพวกเขาออกแบบ Magento ผู้พัฒนา Varien devs ไม่เห็นความต้องการ


1
ขอบคุณสำหรับการตอบสนอง (และคำแนะนำการขยาย) แต่ไม่ตอบคำถามของฉัน ฉันบอกว่าฉันจัดการเพื่อแก้ไขปัญหาของฉันโดยการเปลี่ยนฐานข้อมูลโดยตรง ฉันรู้ว่าฉันไม่ควรทำอย่างนั้น แต่ฉันมีความรู้ที่ดีเกี่ยวกับสิ่งที่ฉันทำ - และการสำรองฐานข้อมูล :) ฉันแค่อยากรู้ว่าทำไมข้อ จำกัด นี้ถึงมีอยู่ เท่าที่ "deven deven ไม่เห็นความต้องการ" ฉันมีความรู้สึกว่าคุณผิด หากคุณใช้ข้อ จำกัด มันจะต้องเป็นเหตุผลสำหรับมัน
Marius
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.