Magento:使用observer以自定义价格将产品添加到购物车
我在产品页面中有一个输入,允许客户更改价格: 我遵循了那个教程: 这是我的代码: config.xml:Magento:使用observer以自定义价格将产品添加到购物车,magento,magento-1.7,magento-1.8,Magento,Magento 1.7,Magento 1.8,我在产品页面中有一个输入,允许客户更改价格: 我遵循了那个教程: 这是我的代码: config.xml: <events> <core_block_abstract_to_html_after> <observers> <customprice> <type>singleton</typ
<events>
<core_block_abstract_to_html_after>
<observers>
<customprice>
<type>singleton</type>
<class>WebDirect_CustomPrice_Model_Observer</class>
<method>convertPricespanToInput</method>
</customprice>
</observers>
</core_block_abstract_to_html_after>
<checkout_cart_product_add_after>
<observers>
<customprice>
<type>singleton</type>
<class>WebDirect_CustomPrice_Model_Observer</class>
<method>applyCustomPrice</method>
</customprice>
</observers>
</checkout_cart_product_add_after>
</events>
独生子女
WebDirect\u客户价格\u模型\u观察者
将价格转换为输入
独生子女
WebDirect\u客户价格\u模型\u观察者
苹果公司
观察员班:
<?php
class WebDirect_CustomPrice_Model_Observer
{
const MODULE_NAME = 'WebDirect_CustomPrice';
public function convertPricespanToInput($observer = NULL) {
if (!$observer) {
return;
}
if ('product.info.simple' == $observer->getEvent()->getBlock()->getNameInLayout()) {
if (!Mage::getStoreConfig('advanced/modules_disable_output/'.self::MODULE_NAME)) {
$transport = $observer->getEvent()->getTransport();
$block = new WebDirect_CustomPrice_Block_priceSpanToInput();
$block->setPassingTransport($transport['html']);
$block->toHtml();
}
}
return $this;
}
/**
* @param Varien_Event_Observer $observer
*/
public function applyCustomPrice(Varien_Event_Observer $observer) {
/* @var $item Mage_Sales_Model_Quote_Item */
$item = $observer->getQuoteItem();
if ($item->getParentItem()) {
$item = $item->getParentItem();
}
// Discounted 50% off
$percentDiscount = 0.50;
// This makes sure the discount isn't applied over and over when refreshing
$specialPrice = $item->getOriginalPrice() - ($item->getOriginalPrice() * $percentDiscount);
// Make sure we don't have a negative
if ($specialPrice > 0) {
$item->setCustomPrice($specialPrice);
$item->setOriginalCustomPrice($specialPrice);
$item->getProduct()->setIsSuperMode(true);
}
}
}
您是否首先检查了您的观察者方法是否正在实际执行?只需在方法的开头放置一个die('here')
,并检查在将产品添加到购物车时是否正在调用它。如果是这样,将模具移入特殊价格检查,并将其更改为模具($specialPrice)
以确保它正在输入if语句。让我们知道是否确实调用了该方法,如果没有,请尝试清除缓存并检查模块是否在管理中启用。@AshleySwatton是的,它的EXEXEXTED空白页上有0,那么下一步该怎么办?如果计算了特价,并且应该大于0:-),我认为它不应该以0结束。注释掉你的计算,然后做一些简单的事情,比如$item->setOriginalCustomPrice(100.00)代码>。如果这是可行的,你需要调试你的计算并找出哪里出了问题。我想你快到了:-)@AshleySwatton,这很有效!!!现在我想得到前端输入的值,正如你在问题图片中看到的,输入的名称和id是“customprice”,你知道怎么做吗?@AshleySwatton你似乎有magento开发的经验,你能检查一下这个问题吗