Який правильний спосіб мати атрибут продукту в Magento автоматично зберігається, щоб процитувати товар, а потім нарешті замовити товар?
Це так просто, як трохи конфігурувати XML, або це ручний процес, який слід шукати перед збереженням подій тощо?
Який правильний спосіб мати атрибут продукту в Magento автоматично зберігається, щоб процитувати товар, а потім нарешті замовити товар?
Це так просто, як трохи конфігурувати 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 для виклику визначення набору полів, яке буде обробляти перетворення з 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
елемента цитування? Якщо значення атрибута оновлюється, як зберегти оновлене значення, а не встановлене у адміністратора