2013-10-10 95 views
1

我創建了一個名爲「流行度」的屬性,它將用於按大多數瀏覽過的產品組織目錄。這個想法是在產品視圖模板(我的主題view.phtml)上獲得它的價值,並增加該值並更新它,但我不知道如何進行此更新,我的意思是,如何保存增加到數據庫中的新值。我把這個放在產品視圖頁面上,看看:如何更新Magento中的屬性值?

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

問題是,$受歡迎程度不會與新值一起保存到數據庫中。我怎樣才能保存這個值?

我把下面的代碼對產品的頁面模板(mytheme的/模板/目錄/產品/ 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); 
} 

感謝您的幫助!

+0

閱讀一個http://stackoverflow.com/questions/15999439/updating-magento-attribute-programatically –

回答

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() 
); 
+0

我把這個代碼在產品頁面模板(mytheme的/ template/catalog/product/view.phtml):'$ from_date ='2010-01-01'; $ to_date = now(); $ product_ids = $ _product-> getId(); $ viewing = Mage :: getResourceModel('reports/product_collection') - > addViewsCount($ from_date,$ to_date) - > addFieldToFilter('entity_id',$ product_ids); foreach($ view as $ view){ \t $ count_views = $ view-> getData('views'); $ product_model-> setData('popular',$ count_views) - > getResource() - > saveAttribute($ product_model,$ count_views); }'但不起作用。 :( – joaogdesigner

+1

@joaosvu請編輯您的原始問題添加代碼,作爲評論它是不可讀的。謝謝。 – OSdave

+0

當然,當然!我已經編輯了這個話題。:) – joaogdesigner