我想向Products添加计算属性(属性)。它的值是使用PHP函数计算的,例如:
function CalculateCustomAttribute() {
...
//Do some calculations based on other Product attributes, date, etc
...
return $calculatedValue; // type float
}
此计算属性必须为:
可以这样做吗?怎么样?
答案 0 :(得分:2)
您想要做的事情可能是可能的,但我不确定您所描述的方法是否可行,我认为使用非常复杂的Magento平台太简单了。
我有一个类似的项目,其中产品的实际价格根据一些输入不断变化,我能够很好地解决问题,但它肯定更复杂,谢谢你似乎希望的。我不确定这种情况对你有帮助,但在这里它会......
基本思想是我创建了新的产品属性(eav属性)。这些作为确定价格究竟应该是什么的输入。请注意,在我的情况下,外部流程会定期更新这些属性。
然后我在“catalog_product_save_before”事件上创建了一个观察者,它只会执行以下操作:
//some calculations to get the $newPrice
$product->setPrice($newPrice);
所以基本上这样做会使价格字段在管理屏幕中保存产品时始终是最新的。
然后,由于用作输入的几个属性不断变化(由外部进程更新),因此我们还必须添加一个magento cron作业以便经常运行,并且它将重新计算价格所有受影响的产品都有这样的......
//some calculations to get the $newPrice
$product->addAttributeUpdate("price", $newPrice, Mage::app()->getStore()->getStoreId());
所以这一切归结为你应该在db中保存属性。当然,您需要找到更新该派生属性的具体位置。也许你的要求会与我所描述的略有不同,但它可能会让你至少走上正确的道路。