2012-04-25 20 views
6

Bu, daha önce birçok kez sorulmuştur, ancak çalışma yanıtı yoktur.Magento - Ürün değerlerini varsayılan değerleri kullanacak şekilde ayarla

Birden çok mağaza var ve bazı öznitelikleri geçersiz kılınmış. Bu öznitelikleri bir komut dosyasıyla 'varsayılan değeri kullan' olarak değiştirmek istiyorum. Burada

bir görüntü deposu görüş ve 'kullanımı varsayılan değer' onay kutuları http://dl.dropbox.com/u/3209649/storeviews-and-defaultvalues.png uygulama/kod/çekirdek olarak

(henüz görüntüleri göndermek için izin verilmez)/Mage/Adminhtml/kontrol/Katalog/gösteren ProductController.php setData() false ile herhangi bir öznitelik için 'Varsayılan Değeri Kullan' seçildiğinde ikinci argüman için kullanılır.

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

Aşağıdaki kod ismini 'set aynı yöntemi kullanarak deposu 3'te ürün 1 'kullanımı varsayılan değerlere' mal etmek çalışır.

$product->setData('name', 'anything'); 

kullanma

require_once '../app/Mage.php'; 
Mage::app(3); 

$product = Mage::getModel('catalog/product')->load(1); 

$product->setData('name', false); # as used in ProductController.php 
$product->save(); 

doğru 'adı' 'şey' ama 'kullanım varsayılan değer' olarak ayarlayın gelmez yanlış özniteliğini ayarlar

'kullan Varsayılan Değer' dir veritabanında herhangi bir yerde saklanmamak için yönetici arabirimi için denetleyici içinde öznitelik sırasını silen başka bir yordam olmalıdır? Burada

İlgili Bağlantılar - http://pastebin.com/raw.php?i=j7fwu9H6

+0

Üzgünüm ama burada soruluyor ne belirsiz:

belirli mağaza görünümü verilen bir özelliğin varsayılan değeri kullanmak yapmak için. –

+0

Onu güncelledim ve bir resme bağlantı ekledim. Şimdi mantıklı mı? –

+1

Ayrıca burada açıklandığı gibi bir SQL yaklaşımını deneyebilirsiniz: http://magento.stackexchange.com/questions/1199/how-to-set-product-attribute-to-use-default-by-sql – WonderLand

cevap

12

mevcut mağazaya Bu tür operasyonlar için yönetici mağaza olmak gerekir, çünkü bu çalışmıyor (henüz ya link göndermek için izin verilmez)>.

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

$product = Mage::getModel('catalog/product') 
    ->load($product_id)   // in your case: 1 
    ->setStoreId($store_id)  // in your case: 3 
    ->setData($attr, false)  // in your case: 'name' 
    ->save(); 
+0

Ben ' Neden bu şekilde çalıştığını anladığımdan emin değilim, ancak bunu teyit edebilirim. Uzun zamandır bunun için bir çözüm arıyordum. Teşekkür ederim. –

+0

Merhaba, currentStore'u vermeden bir betik çalıştırdığımda bir sorunla karşılaştım, arka ofisimi kırdı, varsayılan değerleri ürünlerde özel değerler ile değiştirdim. Komut dizimde ürün ağırlığını yeni güncelledim ancak ürünler için rastgele özel fiyat veya özel görünürlük gibi özel değerler oluşturdu. Bunu daha sonra db'de sildim ama setCurrentStore işlevini çağırmanın neden önemli olduğunu anlamıyorum ... Biraz daha açıklayabilir misiniz? – beluga

+0

'Mage :: app() -> setCurrentStore (Mage_Core_Model_App :: ADMIN_STORE_ID);' Mükemmel bir kod üzerinde birçok saatten sonra, tek sorunum buna ihtiyacım vardı. – FactoryAidan

İlgili konular