Magento - 已计算产品属性(属性)
问题描述:
我想为产品添加计算属性(属性)。它的价值在于使用PHP的功能,例如计算:Magento - 已计算产品属性(属性)
function CalculateCustomAttribute() {
...
//Do some calculations based on other Product attributes, date, etc
...
return $calculatedValue; // type float
}
这个计算出来的属性必须是:
- 在产品页面显示,
- 过滤通过“分层导航”和
- 可在“产品清单”中排序。
可以这样做吗?如何?
答
你想做什么可能是可能的,但我不确定你所描述的方法是否可行,我认为这对于处理非常复杂的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());
所以这一切归结为事实,你应该有该属性保存在分贝。当然,您需要找到更新派生属性的具体位置。也许您的要求与我所描述的要求略有不同,但至少可以让您走上正确的道路。
非常感谢您的建议。我试图消除使用观察员和cron作业来更新字段的需要。如果计算属性的想法是不可能的,那么你的建议会很好的解决。让我们看看是否有人知道是否以及如何实现计算属性。 – mas 2012-02-10 19:54:57
真正的挑战是让分层导航和可排序列表在db中没有字段的情况下工作。这可能是可以做到的,但我认为这将是一个舒适的解决方案。祝你好运。 – shaune 2012-02-10 20:10:30
是的,你是对的 - 分层导航和列表排序似乎需要数据库字段由于分页。 – mas 2012-02-10 22:12:29