2011-07-07 42 views
17

如果此問題不重要,我很抱歉,但我一直在努力尋找我在這裏做錯了什麼。我試圖更改商店視圖級別上的屬性值,但默認值也會更改,而不應該是。當然,這個屬性被設置爲「存儲視圖範圍」。爲了保持簡單,我嘗試了產品名稱。沒有成功。以商店視圖級別的編程方式更改產品屬性

下面是不成功的測試中,我已經試過......

你看到什麼,我做錯了什麼?

非常感謝。


我嘗試:

$product = Mage::getModel('catalog/product')->load(PRODUCT_ID); 
$product->setStoreId(STORE_ID)->setName('new_name')->save(); 

$product = Mage::getModel('catalog/product')->load(PRODUCT_ID); 
$product->setStoreId(STORE_ID)->setStore(STORE_CODE)->setName('new_name')->save(); 

$product = Mage::getModel('catalog/product')->load(PRODUCT_ID); 
$product->setStoreId(STORE_CODE)->setName('new_name')->save(); 

$product = Mage::getModel('catalog/product')->setStoreId(STORE_ID)->load(PRODUCT_ID); 
$product->setName('new_name')->save(); 

$product = Mage::getModel('catalog/product')->setStoreId(STORE_ID)->load(PRODUCT_ID); 
$product->setStoreId(STORE_ID)->setName('new_name')->save(); 

我事件中加入以下的產品型號負荷前行嘗試...

Mage::app()->setCurrentStore(STORE_ID); 
+1

如果你在那裏添加 - > setWebsiteId($ websiteId),它是否工作? –

+0

不...沒有用。不管怎麼說,還是要謝謝你。 –

+0

我如何從多選中的網站中刪除所有產品? – Rathinam

回答

44

因此,這裏是完整的代碼片段,用於更改特定商店視圖上特定產品屬性的屬性值。產品名稱示例:

Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID); 
$product = Mage::getModel('catalog/product')->load(PRODUCT_ID); 
$product->setStoreId(STORE_ID)->setName('my_new_product_name')->save(); 

並且作爲附加答案,您可能有興趣將屬性值更改爲默認值。與一些商店視圖,也默認值得到加載數據加載產品時

Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID); 
$product = Mage::getModel('catalog/product')->load(PRODUCT_ID); 
$product->setStoreId(STORE_ID)->setName(false)->save(); 
+4

感謝分享false - 這是一個有用的提示。 –

+0

非常感謝你。 – Nikitas

+0

嘿@ʍǝɥʇɐɯ,我正在更新每個商店視圖級別的產品價格,並沒有成功。這個答案是否也適用於價格 – Charlie

12

您需要設置當前儲存在以管理員您的代碼塊的頂部:

Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID); 
+0

請參閱下面的我自己的答案完整的片段+有趣的額外信息。謝謝你的幫助。 –

3

注:在這種情況下,「假」的參數必須被傳遞到的setAttribute。節省這樣的產品將節省的默認值存儲值(因此未設置「使用默認值」爲字段) 我結束了下面的函數來清理產品數據從默認值

public static function _removeDefaults($item) { 
    static $attributeCodes = null; 
    if($attributeCodes == null) { 
     $attributes = Mage::getSingleton('eav/config') 
      ->getEntityType(Mage_Catalog_Model_Product::ENTITY)->getAttributeCollection(); 
     $attributeCodes = array(); 
     foreach($attributes as $attribute) { 
      $ac = $attribute->getAttributeCode(); 
      if(in_array($ac, array('sku','has_options','required_options','created_at','updated_at','category_ids'))) { 
       continue; 
      } 
      $attributeCodes[] = $ac; 
     } 
    } 
    foreach($attributeCodes as $ac) { 
     if(false == $item->getExistsStoreValueFlag($ac)) { 
      $item->unsetData($ac); 
     } 
    } 
} 

記得只發送產品加載對於某些商店的視圖

相關問題