Cách chính xác trong Magento để có một thuộc tính sản phẩm được tự động duy trì để trích dẫn một mục và cuối cùng là đặt hàng là gì?
Nó đơn giản như một XML cấu hình nhỏ hay nó là một quá trình thủ công xem xét trước khi lưu các sự kiện và vv?
Cách chính xác trong Magento để có một thuộc tính sản phẩm được tự động duy trì để trích dẫn một mục và cuối cùng là đặt hàng là gì?
Nó đơn giản như một XML cấu hình nhỏ hay nó là một quá trình thủ công xem xét trước khi lưu các sự kiện và vv?
Câu trả lời:
một cách sẽ là sử dụng một người quan sát và một công cụ chuyển đổi.
người quan sát sẽ có được thuộc tính từ sản phẩm đến trích dẫn (sử dụng một thuộc tính có tên là 'test') và trình chuyển đổi nhận được thuộc tính từ trích dẫn theo thứ tự.
trong cấu hình của bạn:
<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>
trong người quan sát của bạn:
public function setTestAttribute(Varien_Event_Observer $observer) {
$item = $observer->getQuoteItem();
$product = $observer->getProduct();
$item->setTest($product->getTest());
return $this;
}
Điều này được thực hiện bằng cách kết hợp kiến thức của bạn về trình quan sát và tệp cấu hình. Cấu hình tệp sẽ quản lý việc cung cấp định nghĩa thuộc tính tùy chỉnh trên mục trích dẫn và người quan sát sẽ xử lý lưu thuộc tính sản phẩm vào trích dẫn khi được thêm vào trích dẫn.
Từ đó, bạn sử dụng config.xml để gọi định nghĩa fieldset, sẽ xử lý việc chuyển đổi từ quote_item
sang order_item
.
Tiết lộ đầy đủ: Nội dung dưới đây là của Atwix. Liên kết dưới câu trả lời.
Đầu tiên, bạn nên thêm thuộc tính tùy chỉnh vào
sales->quote->item->product_attributes
nút:<sales> <quote> <item> <product_attributes> <custom_attribute /> </product_attributes> </item> </quote> </sales>
Điều này làm cho thuộc tính có thể truy cập khi chúng tôi sẽ sao chép nó từ sản phẩm để trích dẫn mục - đó là bước tiếp theo của chúng tôi. Đối với nhiệm vụ này, người quan sát được sử dụng và sự kiện sẽ được gọi là
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>
Người quan sát:
public function salesQuoteItemSetCustomAttribute($observer) { $quoteItem = $observer->getQuoteItem(); $product = $observer->getProduct(); $quoteItem->setCustomAttribute($product->getCustomAttribute()); }
Điều cuối cùng chúng ta cần quan tâm - đó là chuyển đổi thuộc tính từ
quote_item
sangorder_item
. Và điều này có thể được thực hiện với 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>
Nguồn: Atwix (người đầy chiến thắng): http://www.atwix.com/magento/custom-product-attribution-quote-order-item/
100
thay vì 50
trong mục trích dẫn? Nếu giá trị thuộc tính được cập nhật, làm cách nào để lưu giá trị cập nhật đó chứ không phải bộ được đặt từ quản trị viên