2012-10-17 54 views
7

我正在使用模塊設置腳本添加新的屬性組,屬性集和屬性。我能夠創建屬性集,屬性組和添加產品到組/集。但我有很難設定is_filterableis_visibleis_visible_on_frontis_html_allowed_on_front參數。使用安裝腳本在Magento中添加自定義產品屬性

$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管理界面(目錄 - >屬性 - >管理屬性)查看屬性時,我看到is_filterable,is_visible,is_visible_on_front和is_html_allowed_on_front參數設置爲否。我嘗試了各種組合,但沒有運氣。我正在使用Magento CE 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_attributecatalog_eav_attribute時)

指向好安裝程序類,取一看標準Mage_Catalog​​3210和適應它爲你的模塊:

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

PS:注意_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調用中將其設置爲1('is_visible_on_front'=> 1,但我沒有看到它在DB/admin中被更改。 – sukkad

-2

使用'visible_on_front' => 1,在addAttribute通話。

相關問題