我需要知道如何为magento中的等级价格添加数据范围(来自和迄今为止),这将使价格仅出现在给定的日期范围内。
我是magento的新手,所以任何指导都会有很大的帮助。
提前感谢。
答案 0 :(得分:6)
由于默认情况下这是不可能的,magento你可以尝试的是:
在管理员中创建2个字段 - >目录 - > tierprice_to_date
和tierprice_from_date
的属性,并将其添加到属性集中的price
组。
在/app/design/frontend/base/default/template/catalog/product/view.phtml
if(date between tierprice_from_date and tierprice_to_date){
echo $this->getTierPriceHtml();
}
然后使用观察者创建一个自定义模块,使用事件'sales_quote_add_item'
检查项目添加到购物车时的价格:
创建:app / code / local / MageIgniter / TierPriceDateRange / etc / config.xml
<?xml version="1.0"?>
<config>
<modules>
<MageIgniter_TierPriceDateRange>
<version>1.0.1</version>
</MageIgniter_TierPriceDateRange>
</modules>
<global>
<models>
<tierpricedaterange>
<class>MageIgniter_TierPriceDateRange_Model</class>
</tierpricedaterange>
</models>
<events>
<sales_quote_add_item>
<observers>
<tierpricedaterange_observer>
<type>singleton</type>
<class>tierpricedaterange/observer</class>
<method>updatePrice</method>
</tierpricedaterange_observer>
</observers>
</sales_quote_add_item>
</events>
</global>
</config>
创建:app / code / local / MageIgniter / TierPriceDateRange / Model / Observer.php
class MageIgniter_TierPriceDateRange_Model_Observer
{
public function updatePrice($observer) {
if(date NOT between tierprice_from_date and tierprice_to_date){
$cartItem = $observer->getEvent()->getQuoteItem();
// check if a tier price was apply and change it back to the original price (none tier price)
$product = Mage::getModule('catalog/product')->load($product->getId());
if($cartItem->getPrice() == $product->getTierPrice($cartItem->getQty())){
$new_price = $product->getPrice();
$product->setOriginalCustomPrice($new_price);
$product->save();
}
}
return $this;
}
创建:app / etc / modules / MageIgniter_TierPriceDateRange.xml
<?xml version="1.0"?>
<config>
<modules>
<MageIgniter_TierPriceDateRange>
<active>true</active>
<codePool>local</codePool>
</MageIgniter_TierPriceDateRange>
</modules>
</config>
然后清除缓存,如果有的话。
答案 1 :(得分:2)
在标准Magento配置中无法做到这一点。您必须构建(或为其构建)自定义模块才能实现此目的。