2012-10-17 16 views
7

का उपयोग कर Magento में कस्टम उत्पाद विशेषताओं को जोड़ना मैं नए गुण समूह, विशेषता सेट और विशेषताओं को जोड़ने के लिए मॉड्यूल सेटअप स्क्रिप्ट का उपयोग कर रहा हूं। मैं विशेषता सेट, विशेषता समूह बनाने और समूह/सेट में उत्पादों को जोड़ने में सक्षम हूं। लेकिन मैं कठिन समय की स्थापना is_filterable, is_visible, is_visible_on_front और is_html_allowed_on_front मानकों हो रहा है।सेटअप स्क्रिप्ट

$installer->addAttribute('catalog_product', 'offer_type', array(
     'backend'  => '', 
     'frontend'  => '', 
     'class' => '', 
     'default'  => '', 
     'label' => 'Offer type', 
     'input' => 'text', 
     'type' => 'int', 
     'source'  => '', 
     'global'  => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_STORE, 
     'visible'  => 1, 
     'required'  => 1, 
     'searchable' => 0, 
     'filterable' => 1, 
     'unique'  => 0, 
     'comparable' => 0, 
     'visible_on_front' => 1, 
     'is_html_allowed_on_front' => 1, 
     'user_defined' => 1, 
)); 

$installer->addAttributeToSet('catalog_product', $sSetId, $groupName, 'offer_type'); 

मैं OFFER_TYPE देख Magento के लिए और स्थापित करने के लिए विशेषता ($ sSetID) और समूह के लिए ($ समूहनाम) जुड़ते। हालांकि जब मैं Magento admin UI (Catalog-> विशेषताएँ-> गुण प्रबंधित करें) से विशेषता को देखता हूं, तो मैं is_filterable, is_visible, is_visible_on_front और is_html_allowed_on_front पैरामीटर को सेट करता हूं। मैंने विभिन्न संयोजनों की कोशिश की है लेकिन कोई भाग्य नहीं है। मैं Magento सीई 1.7.0.2 का उपयोग कर रहा हूँ। मुझे यकीन नहीं है कि मेरी सेटअप स्क्रिप्ट में क्या गुम है। मैंने इसके लिए http://blog.chapagain.com.np/magento-adding-attribute-from-mysql-setup-file/ को रेफर कर दिया है। क्या मुझे कुछ याद आ रही है? अग्रिम धन्यवाद।

उत्तर

7

क्या आपने अपने इंस्टॉलर को अपने config.xml में ठीक से कॉन्फ़िगर किया है? Magento इंस्टॉलर्स के लिए मानक वर्ग Mage_Eav_Model_Entity_Setup है लेकिन उत्पादों से निपटने पर, आपको इसके बजाय Mage_Catalog_Model_Resource_Setup का उपयोग करना होगा। क्यों? उनकी विधि _prepareValues() को देखो और आप जान जाएंगे अधिकृत गुण हैं क्या (उत्पादों मानक eav_objects तुलना में अधिक विकल्प है, तो आप देख सकते हैं कि जब टेबल eav_attribute और catalog_eav_attribute की तुलना)

अच्छा संस्थापक वर्ग को इंगित करने के लिए, ले एक मानक Mage_Catalogconfig.xml को देखो और अपने मॉड्यूल के लिए अनुकूल:

<resources> 
    <catalog_setup> 
     <setup> 
      <module>Mage_Catalog</module> 
      <class>Mage_Catalog_Model_Resource_Setup</class><!-- that line !--> 
     </setup> 
    </catalog_setup> 
</resources> 

पुनश्च: ध्यान दें कि _prepareValues() विधि केवल कहा जाता है जब एक विशेषता जोड़ रहा है ... अगर आप एक विशेषता आप करने की आवश्यकता होगी अपडेट करना चाहते हैं पूर्ण विकल्प नाम का उपयोग करें ("is_visible" और न केवल "दृश्यमान") ...

एक और हैक इन विशेषताओं बाद में जोड़ने के लिए होगा, लेकिन यह बहुत ही सुंदर नहीं है:

// adding atribute : 
// [...] 

//getting the new attribute with full informations 
$eavConfig = Mage::getSingleton('eav/config'); 
$installer->cleanCache(); 
$attribute = $eavConfig->getAttribute('catalog_product', $attributeCode); 
$attribute->addData(array(
    'is_visible' => 1 
)); 
$attribute->save() 
+2

धन्यवाद! मसला हल हो गया। – sukkad

+0

कोई विचार है कि is_visible_on_front कैसे सेट करें? हालांकि मैं इसे addAttribute कॉल ('is_visible_on_front' => 1 में 1 पर सेट कर रहा हूं, मुझे यह नहीं लगता कि यह डीबी/व्यवस्थापक में बदल रहा है। – sukkad