如何在Magento中更新属性值?

时间:2013-10-10 14:57:52

标签: magento magento-1.7

我创建了一个名为“受欢迎程度”的属性,该属性将用于按大多数查看的产品组织目录。这个想法是在产品视图模板(我的主题上的view.phtml)上获得它的价值并增加该值并更新它,但是我不知道如何进行此更新,我的意思是,如何将新值保存到数据库中。我把它放在产品视图页面上,看看:

$popularity = $_product->getData('popularity');
$popularity++;

重点是$ Popular不会随着新值保存到数据库中。如何保存该值?

我将以下代码放在产品页面模板(mytheme / template / catalog / product / view.phtml)上但不起作用:

$from_date = '2010-01-01';
$to_date = now();
$product_ids = $_product->getId();
$viewed = Mage::getResourceModel('reports/product_collection')->addViewsCount($from_date, $to_date)->addFieldToFilter('entity_id', $product_ids);
foreach($viewed as $view) {
    $count_views = $view->getData('views');
    $product_model->setData('popularity', $count_views)->getResource()->saveAttribute($product_model, $count_views); 
}

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

试试这个:

$popularity = $_product->getData('popularity');
$popularity++;
Mage::getSingleton('catalog/product_action')
    ->updateAttributes(array($_product->getId()), array('popularity', $popularity), 0);

如果您的属性范围为GLOBAL,则此方法有效。如果它是其他东西,那么你可以使用它:

Mage::getSingleton('catalog/product_action')
        ->updateAttributes(
             array($_product->getId()), 
             array('popularity', $popularity), 
             Mage::app()->getStore()->getId()
);