2012-02-15 11 views
6

私はマルチストアのセットアップを行っていますが、「デフォルト値を使用」オプションを使用するように特定のストアの製品属性を設定していますストアビュー)、次のように:MagentoはupdateAttributesを使用して製品属性の「デフォルト値を使用」を設定します

$_product = Mage::getModel('catalog/product'); 
$_product->load($productId); 
$_product->setStoreId($storeId)->setName(false)->save(); 

これは私が使用しようとしています設定する属性の多くを持っていることを考えると

を「デフォルト値を使用する」を使用して$ ProductIDのためのstoreIdのName属性を設定し、 :

Mage::getSingleton('catalog/product_action')->updateAttributes(array($productId), array('name' => false), $storeId); 

しかし、これは "Use Default Value"チェックボックスをtrueに設定していません。

- > updateAttributesを使用して、 "Use Default Value"オプションを使用するストア値を設定するにはどうすればよいですか?

スクリーンショット:

enter image description here

+0

複製:http://stackoverflow.com/questions/9299145/magento-save-a-product-without-setting-use-default-value – OSdave

+0

@OSDaveいいえ、これは**ではありません**その複製質問(私は同じスクリーンショットを使ったが)。この質問は特にupdateAttributesの問題に関するものですが、他の質問では私はupdateAttributesについて言及しませんでした。もっと長い説明:他の質問の解決に取り組んでいるうちに、私はupdateAttributesに関連する新しい問題に遭遇しました。したがって、私はこの質問をしました(これは別の質問です)。 – mas

+0

あなたは最終的にあなたの問題を解決するために何を使いましたか? – RPDeshaies

答えて

4

"デフォルト値を使用" フラグがどこかのデータベースに格納されていません。

Magentoのコアは、製品を保存するときにこれを行うには、そのフラグを使用しています。

/** 
    * Check "Use Default Value" checkboxes values 
    */ 
    if ($useDefaults = $this->getRequest()->getPost('use_default')) { 
     foreach ($useDefaults as $attributeCode) { 
      $product->setData($attributeCode, false); 
     } 
    } 

他のいくつかのことをやって前に。

私はMage_Adminhtml_Catalog_ProductController(app/code/core/Mage/Adminhtml/controllers/Catalog/ProductController.php)を見て、Magentoコアがどのように機能するかを調べます。

具体的saveAction()_initProductSave()

私は、これは正しい方向にポイントを願っています。

+0

残念ながら、これは本当に質問に答えるものではありません。適切な答えは、残念ながら、 'updateAttributes()'では不可能です。 「このMagento SEの回答」(http://magento.stackexchange.com/a/33371/142)も参照してください。 – Simon

+0

本当に、それは質問に答えます。質問は本質的に「どのように「デフォルト値を使用する」オプションを使用するためにストア値を設定できますか?」 - > updateAttributesを使用できない間は、私の答えはできることの詳細を示します。 –

0

Magento Adminのデフォルト値と同じものである店舗ID(admin store)として0を使用するだけです。

Mage::getSingleton('catalog/product_action') 
    ->updateAttributes(
     array($productId), 
     array('name' => false), 
     0); 

すでにストアビューのスコープを設定した場合、あなたが行くと使用のデフォルト値を再確認する必要がありますか、それは、関連する範囲で属性をオーバーライドします。

これらをプログラムで設定する方法があるかもしれません。私は不確実です。

関連する問題