我正在设置magento Feed,因为我需要系统自动计算最后几个属性的值,所以我卡住了。
我怎样才能让magento创建一个具有MAX销售价格和MAX列表价格以及评级的属性,我还需要2个以上的折扣金额1和最后一个折扣百分比。
感谢任何帮助。
答案 0 :(得分:0)
如果我正确理解您的问题,您可能会使用某些Magento对象的afterLoad
事件。这适用于Magento内的大多数模型。
通常,Magento中使用的大多数模型(例如,核心库中的产品,订单等以及您将在具有db访问权限的自定义模块中定义的每个模型)都会扩展类Mage_Core_Model_Abstract
,它提供某些“基于事件”的方法。
这些方法包括_afterDelete
,_afterDeleteCommit
,_afterLoad
,_afterSave
,_afterSavecommit
,_beforeLoad
,_beforeSave
和{{ 1}}(在Magento> 1.4.2.0中)。
我认为,您希望在产品上具有自动校准属性。这里的第一步是创建一个新的自定义模块,它覆盖了Magento产品的核心模型。在新创建的模型中,您可以使用_beforeDelete
中的以下条目:
./app/code/local/YourNamespace/YourModule/etc/config.xml
然后,您可以覆盖名为[...]
<global>
[...]
<models>
<catalog>
<rewrite>
<product>YourNamespace_YourModule_Model_Product</product>
</rewrite>
</catalog>
</models>
[...]
<global>
[...]
的文件中显示的Product
模型:
./app/code/local/YourNamespace/YourModule/Model/Product.php
有了这个,只要你加载了一个模型,你就有机会以你能想象的方式使用那个计算出来的值。请记住,这个代码是在产品加载的每个时间执行的,这可能很常见(如果它是产品,那就是),所以不要太过于对此过于苛刻。
还要记住,在代码执行完成后,此值将丢失,因为只有模型“存在”时,该值才存在。如果要存储它,您还可以覆盖<?php
class YourNamespace_YourModule_Model_Product extends Mage_Catalog_Model_Product
{
protected function _afterLoad()
{
parent::_afterLoad();
//your voodoo goes here.
$my_awesome_calculated_value = $this->getData('my_awesome_float_attribute') / 2;
$this->setData('my_awesome_calculated_value', $my_awesome_calculated_value);
}
}
或创建占位符属性,每次加载模型时填充这些属性,然后保存。
对于_beforeSave
和discount_amount
的属性,我会使用相同的策略:
discount_percentage
中的dicount_amount
和discount_percentage
并将其存储在模型上如果您是Magento的新手,并且不明确知道如何创建新模块,您可以从http://www.magentocommerce.com/wiki/5_-_modules_and_development/0_-_module_development_in_magento/custom_module_with_custom_database_table开始(虽然它有点过时)或者查看stackoverflow。
LG,
祝你好运,
FLO