Это делается путем объединения ваших знаний наблюдателей и config.xml. Config.xml будет управлять предоставлением пользовательского определения атрибута для элемента цитаты, а наблюдатель будет обрабатывать сохранение атрибута продукта в цитате при добавлении в цитату.
Оттуда вы используете config.xml для вызова определения набора полей, которое будет обрабатывать преобразование из 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/