2012-04-25 13 views
6

यह कई बार पहले पूछा गया है लेकिन बिना किसी काम के जवाब के।Magento - डिफ़ॉल्ट मानों का उपयोग करने के लिए उत्पाद विशेषता सेट करें

मेरे पास एकाधिक स्टोर हैं और कुछ विशेषताओं को ओवरराइड कर दिया गया है। मैं इन विशेषताओं को एक स्क्रिप्ट के साथ 'डिफ़ॉल्ट मान का उपयोग' में बदलना चाहता हूं।

यहाँ एक छवि दुकान विचारों और 'उपयोग डिफ़ॉल्ट मान' चेक बॉक्स http://dl.dropbox.com/u/3209649/storeviews-and-defaultvalues.png

एप्लिकेशन/कोड/कोर में (अभी तक छवियों पोस्ट करने के लिए अनुमति नहीं है)/दाना/Adminhtml/नियंत्रक/सूची/दिखा रहा है ProductController.php setData() का उपयोग झूठी के साथ दूसरे तर्क के लिए किया जाता है जब किसी भी विशेषताओं के लिए 'डिफ़ॉल्ट मान का उपयोग करें' चुना गया है।

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

निम्नलिखित कोड 'नाम' की स्थापना की एक ही विधि का उपयोग कर दुकान 3 में उत्पाद 1 के लिए 'उपयोग मूलभूत मूल्यों' को श्रेय देने के लिए प्रयास करता है।

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

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

का उपयोग सही ढंग से सेट 'नाम' 'कुछ भी' लेकिन झूठी 'उपयोग डिफ़ॉल्ट मान' के लिए यह निर्धारित नहीं करता है से जोड़कर देखते हैं

'का प्रयोग करें डिफ़ॉल्ट मान' है डेटाबेस में कहीं भी संग्रहीत नहीं है, इसलिए व्यवस्थापक इंटरफ़ेस के लिए नियंत्रक के भीतर एक और प्रक्रिया होनी चाहिए जो विशेषता पंक्ति को हटा देती है?

संबंधित यहाँ लिंक ->http://pastebin.com/raw.php?i=j7fwu9H6

+0

मैं माफी चाहता हूँ, लेकिन यह स्पष्ट नहीं है कि यहाँ क्या कहा जा रहा है। –

+0

मैंने इसे अद्यतन किया है और एक छवि के लिए एक लिंक जोड़ा है। क्या अब यह समझ में आता है? –

+1

आप यहां वर्णित अनुसार SQL दृष्टिकोण भी आज़मा सकते हैं: http://magento.stackexchange.com/questions/1199/how-to-set-product-attribute-to-use-default-by-sql – WonderLand

उत्तर

12

इसका कारण यह है कि आप वर्तमान स्टोर ऑपरेशन के इस प्रकार के लिए व्यवस्थापक दुकान जा रहा है की जरूरत है काम नहीं करता है (अभी तक या तो लिंक पोस्ट करने की अनुमति नहीं है)।

एक विशिष्ट दुकान दृश्य किसी दिए गए विशेषता के लिए डिफ़ॉल्ट मान का उपयोग करने के लिए:

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

मैं ' मुझे यकीन नहीं है कि मैं समझता हूं कि यह इस तरह क्यों काम करता है लेकिन मैं इसकी पुष्टि कर सकता हूं। मैं लंबे समय से इसका समाधान ढूंढ रहा हूं। धन्यवाद। –

+0

नमस्ते, जब मैंने वर्तमान स्टोर दिए बिना एक स्क्रिप्ट चलाई तो मुझे एक समस्या का सामना करना पड़ा, इसने मेरे बैक ऑफिस को तोड़ दिया, उत्पादों पर कस्टम मूल्यों के साथ डिफ़ॉल्ट मूल्यों को बदल दिया। मेरी लिपि में मैंने अभी उत्पादों के वजन को अपडेट किया है, लेकिन यह कस्टम मूल्य या कस्टम दृश्यता जैसे उत्पादों के लिए कस्टम मूल्यों को बनाया गया है। मैंने बाद में डीबी में इसे हटा दिया, लेकिन मुझे नहीं पता कि setCurrentStore फ़ंक्शन को कॉल करना क्यों महत्वपूर्ण है ... क्या आप थोड़ा और समझा सकते हैं? – beluga

+0

'मेज :: ऐप() -> setCurrentStore (Mage_Core_Model_App :: ADMIN_STORE_ID); 'सही कोड को देखने के कई घंटों के बाद, मेरी एकमात्र समस्या यह थी कि मुझे इसकी आवश्यकता थी। – FactoryAidan

संबंधित मुद्दे