2012-02-15 18 views
6

Çok mağazada kurulum yapıyorum ve belirli bir mağaza için "Varsayılan Değeri Kullan" seçeneğini kullanmak üzere bir Ürünün Niteliği ayarını yapıyorum - (örn. Mağaza Görünüm), aşağıdaki gibi:Magento ayarı Product Attribute'un updateAttributes kullanarak "Varsayılan Değeri Kullan" ayarı

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

Bu $ productId ben kullanmaya çalışıyorum ayarlamak için niteliklerin bir sürü var olduğu göz önüne alındığında "Kullanım varsayılan değer"

kullanmak için StoreID İsim niteliğini belirler :

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

Ancak bu, "Varsayılan Değeri Kullan" onay kutusunu true değerine ayarlamıyor.

"Varsayılan Değeri Kullan" seçeneğini kullanmak için bir mağaza değeri ayarlamak için -> updateAttributes öğesini nasıl kullanabilirim?

Ekran Görüntüsü:

enter image description here

+0

çoğaltılamaz: http://stackoverflow.com/questions/9299145/magento-save-a-product-without-setting-use-default-value – OSdave

+0

@OSdave Hayır, bu Bunun ** değil ** yineleniyor soru (aynı ekran görüntüsünü kullandım). Bu soru özellikle updateAttributes ile ilgili bir sorudur, diğer soruda updateAttributes'dan bile bahsetmedim. Daha uzun açıklama: Diğer soru için çözüm üzerinde çalışırken, updateAttributes ile ilgili yeni bir problemle karşılaştım ve bu soruyu sordum (farklı bir soru olduğu için). – mas

+0

Sonunda sorununuzu çözmek için ne kullandınız? – RPDeshaies

cevap

4

"Use Varsayılan Değer" bayrak yerde veritabanında depolanmaz.

Magento çekirdek ürünlerini kaydederken bayrak bunu yapmak için kullanır:

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

başka şeyler yapmadan önce.

Mage_Adminhtml_Catalog_ProductController (app/code/core/Mage/Adminhtml/controllers/Catalog/ProductController.php) 'ye bakıp Magento çekirdeğinin nasıl çalıştığını öğrenirim.

Özellikle saveAction() ve _initProductSave() bu doğru yönde işaret umuyoruz.

+0

Maalesef, bu soruya gerçekten cevap vermiyor. Doğru cevap, ne yazık ki, 'updateAttributes()' yoluyla mümkün değildir. Ayrıca bkz. [Bu Magento SE yanıtı] (http://magento.stackexchange.com/a/33371/142). – Simon

+0

Gerçekten de, soruya cevap veriyor. Soru şu: “Varsayılan Değeri Kullan seçeneğini kullanmak için bir mağaza değerini nasıl ayarlayabilirim?”, Ve -> updateAttributes ile yapamayacağınız zaman, cevabım nasıl yapabileceğiniz hakkında ayrıntılı bilgi verir. –

0

Sadece Magento Yöneticisi'nde varsayılan değerlerle aynı olan mağaza kimliği (yönetici deposu) olarak 0 kullanın.

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

Zaten mağaza görünümü kapsamları ayarlarsanız içeri girip kullanımı varsayılan değerleri yeniden kontrol etmek zorunda kalacak ya da ilgili kapsamda özelliğini geçersiz kılar.

Bunları programsal olarak ayarlamak için bir yol olabilir. Ben belirsizim.