我有几种不同大小的均质产品,以克为单位。我想提供一个价值,客户可以通过最佳价值对产品列表进行排序,从价格除以质量/重量/尺寸计算得出。我已经有一个属性,其大小以克为单位,由一个数字后跟一个'g'(例如,100g,500g)定义,所以为了更容易,我想我会创建另一个反映重量的属性而不是'g'附加在值上。
但是,我不知道是否可以使用属性自动计算值(即,创建一个自动计算价格/重量值的属性,而不需要我做任何工作)。或者,我是否必须做一些自定义代码,它会在哪里?任何建议赞赏:)
答案 0 :(得分:0)
您可以通过创建自定义模块来实现此目的。 在此模块中,您必须在“catalog_product_save_after”事件上创建一个观察者。
由于我不知道你使用的是哪个Magento版本,我只会给你一些在你当前版本中可能有效或可能无效的片段,但肯定会帮助你理解。
这是您的自定义模块'config.xml'的样子:
<global>
<events>
<catalog_product_save_after>
<observers>
<calculateBestValue>
<type>singleton</type>
<class>Foo_Bar_Model_Observer</class>
<method>calcBestValue</method>
</calculateBestValue>
</observers>
<catalog_product_save_after>
</events>
</global>
这是你的'Observer.php'模型。
public function calcBestValue(Varien_Event_Observer $observer){
$_product = $observer->getEvent()->getProduct();
// Here you can access your productData and do your logic
// Ex: $_product->getData('weight');
// Ex: $_product->getData('price');
// Ex: $_product->getData('mass');
// Ex: $_product->getData('size');
/* Your best value logic here */
// After that you just need to set the bestValue attribute in the product
$_product->setBestValue($bestValue);
}
您需要为“最佳价值”创建目录属性,并将其与属性集关联。
“最佳价值逻辑”准备就绪后,您只需启用自定义属性即可在产品列表中进行排序。见https://magento.stackexchange.com/questions/9928/adding-custom-attributes-to-product-list