วิธีที่ถูกต้องใน Magento ที่จะมีคุณลักษณะของผลิตภัณฑ์จะคงอยู่โดยอัตโนมัติเพื่อเสนอราคาสินค้าและในที่สุดก็จะสั่งซื้อสินค้า?
มันง่ายเหมือน config XML เล็กน้อยหรือเป็นกระบวนการแบบแมนนวลที่ดูก่อนบันทึกเหตุการณ์และอื่น ๆ ?
วิธีที่ถูกต้องใน Magento ที่จะมีคุณลักษณะของผลิตภัณฑ์จะคงอยู่โดยอัตโนมัติเพื่อเสนอราคาสินค้าและในที่สุดก็จะสั่งซื้อสินค้า?
มันง่ายเหมือน config XML เล็กน้อยหรือเป็นกระบวนการแบบแมนนวลที่ดูก่อนบันทึกเหตุการณ์และอื่น ๆ ?
คำตอบ:
วิธีหนึ่งคือการใช้ผู้สังเกตการณ์และตัวแปลง
ผู้สังเกตการณ์จะได้รับคุณลักษณะจากผลิตภัณฑ์ไปยังเครื่องหมายคำพูด (โดยใช้แอตทริบิวต์ที่เรียกว่า 'ทดสอบ') และตัวแปลงได้รับแอตทริบิวต์จากเครื่องหมายคำพูดถึงลำดับ
ในการกำหนดค่าของคุณ:
<global>
<fieldsets>
<sales_convert_quote_item>
<test>
<to_order_item>*</to_order_item>
</test>
</sales_convert_quote_item>
</fieldsets>
<sales>
<quote>
<item>
<product_attributes>
<test />
</product_attributes>
</item>
</quote>
</sales>
<events>
<sales_quote_item_set_product>
<observers>
<YOUR_MODULE>
<class>YOUR_MODULE/observer</class>
<method>setTestAttribute</method>
</YOUR_MODULE>
</observers>
</sales_quote_item_set_product>
</events>
</global>
ในผู้สังเกตการณ์ของคุณ:
public function setTestAttribute(Varien_Event_Observer $observer) {
$item = $observer->getQuoteItem();
$product = $observer->getProduct();
$item->setTest($product->getTest());
return $this;
}
สิ่งนี้ทำได้โดยการรวมความรู้ของผู้สังเกตการณ์และ config.xml Config.xml จะจัดการการจัดหาคำนิยามของแอตทริบิวต์ที่กำหนดเองในรายการคำพูดและผู้สังเกตการณ์จะจัดการกับการบันทึกคุณสมบัติของผลิตภัณฑ์ไปยังคำพูดเมื่อเพิ่มลงในคำพูด
จากนั้นคุณใช้ config.xml ที่จะเรียกความหมาย fieldset ซึ่งจะจัดการกับการแปลงจากไปquote_item
order_item
การเปิดเผยแบบเต็ม: เนื้อหาด้านล่างนี้มาจาก Atwix ลิงค์ด้านล่างคำตอบ
ในตอนแรกคุณควรเพิ่มแอตทริบิวต์ที่กำหนดเองไปยัง
sales->quote->item->product_attributes
โหนด:<sales> <quote> <item> <product_attributes> <custom_attribute /> </product_attributes> </item> </quote> </sales>
สิ่งนี้ทำให้คุณสมบัติสามารถเข้าถึงได้เมื่อเราจะคัดลอกจากผลิตภัณฑ์ไปยังรายการอ้างอิง - ซึ่งเป็นขั้นตอนต่อไปของเรา สำหรับภารกิจนี้ผู้สังเกตการณ์จะถูกใช้และเหตุการณ์จะถูกเรียกว่า
sales_quote_item_set_product
:<sales_quote_item_set_product> <observers> <yourmodule_customattribute> <class>yourmodule_customattribute/observer</class> <method>salesQuoteItemSetCustomAttribute</method> </yourmodule_customattribute> </observers> </sales_quote_item_set_product>
สังเกตการณ์:
public function salesQuoteItemSetCustomAttribute($observer) { $quoteItem = $observer->getQuoteItem(); $product = $observer->getProduct(); $quoteItem->setCustomAttribute($product->getCustomAttribute()); }
สิ่งสุดท้ายที่เราต้องดูแลเกี่ยวกับ - มันเป็นแปลงแอตทริบิวต์จากไป
quote_item
order_item
และสิ่งนี้สามารถทำได้ด้วย XML:<fieldsets> <sales_convert_quote_item> <custom_attribute> <to_order_item>*</to_order_item> </custom_attribute> </sales_convert_quote_item> <sales_convert_order_item> <custom_attribute> <to_quote_item>*</to_quote_item> </custom_attribute> </sales_convert_order_item> </fieldsets>
ที่มา: Atwix (ผู้ชนะเต็ม): http://www.atwix.com/magento/custom-product-attribute-quote-order-item/
100
แทน50
รายการอ้างอิงได้อย่างไร หากค่าแอททริบิวได้รับการอัปเดตฉันจะบันทึกค่าที่อัปเดตนั้นได้อย่างไรและไม่ใช่หนึ่งชุดจากผู้ดูแลระบบ