Я пытаюсь создать динамическую скидку продукта, используя значения из веб-сервиса.Событие Magento Observer не работает и использует webservices внутри класса Observer
Я искал несколько руководств в Интернете по этому вопросу, и я обнаружил, что мне нужно использовать checkout_cart_product_add_after
и checkout_cart_update_items_after
.
Однако я последовал за несколькими гидами. Создал мой собственный модуль (который отображается в бэк-офисе Magento: Configuration> Advanced> Modules) и наблюдатель для этого модуля. Я ничего не создал, но он не работает. Поскольку я вижу модуль в этом меню, я считаю, что проблема связана с вызовом наблюдателя/события.
Вот config.xml (который находится внутри приложения \ кода \ Local \ имен \ MyModule \ и т.д.) для моего модуля:
<?xml version="1.0" encoding="UTF-8"?>
<config>
<modules>
<namespace_MyModule>
<version>0.1.0</version>
</namespace_MyModule>
</modules>
<global>
<events>
<checkout_cart_product_add_after>
<observers>
<namespace_MyModule_Discount>
<class>MyModule/Observer</class>
<method>MyModulePriceChange</method>
</namespace_MyModule_Discount>
</observers>
</checkout_cart_product_add_after>
</events>
</global>
</config>
И это мой наблюдатель (который находится внутри приложения \ кода \ локальное \ имен \ MyModule \ Model) для моего модуля:
<?php
class namespace_MyModule_Model_Observer
{
public function MyModulePriceChange(Varien_Event_Observer $obs)
{
// Get the quote item
$item = $obs->getQuoteItem();
// Ensure we have the parent item, if it has one
$item = ($item->getParentItem() ? $item->getParentItem() : $item);
// Load the custom price
$price = $this->_getPriceByItem($item);
// Set the custom price
$item->setCustomPrice($price);
$item->setOriginalCustomPrice($price);
// Enable super mode on the product.
$item->getProduct()->setIsSuperMode(true);
}
protected function _getPriceByItem(Mage_Sales_Model_Quote_Item $item)
{
$price = 4;
//use $item to determine your custom price.
return $price;
}
}
?>
Кроме того, можно делать позвонить клиенту мыло использовать WebService внутри наблюдателя?
Надеюсь, мой вопрос ясен, заблаговременно за помощь.