1

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

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

关键是 $popularity 没有与新值一起保存到数据库中。我怎样才能保存该值?

我将下面的代码放在产品页面模板(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); 
}

感谢帮助!

4

1 回答 1

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()
);
于 2013-10-10T15:04:37.060 回答