2012-10-17 18 views
7

モジュール設定スクリプトを使用して、新しい属性グループ、属性セットおよび属性を追加しています。私は属性セット、属性グループを作成し、グループ/セットに製品を追加することができます。しかし、私はis_filterableis_visibleis_visible_on_frontis_html_allowed_on_frontパラメータの設定に苦労しています。私はoffer_type見るセットアップスクリプトを使用して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'); 

は、Magentoのにして($ sSetID)を設定し、グループに($グループ名)属性に追加取得します。 magento admin UI(Catalog-> attributes-> Manage Attributes)の属性を見ると、is_filterable、is_visible、is_visible_on_front、is_html_allowed_on_frontのパラメータがNoに設定されています。私はMagento CE 1.7.0.2を使用しています。セットアップスクリプトに何が欠けているのか分かりません。私はこのためにhttp://blog.chapagain.com.np/magento-adding-attribute-from-mysql-setup-file/と言いました。私は何か不足していますか? ありがとうございます。

答えて

7

config.xmlでインストーラを正しく設定しましたか?マゼンタインストーラの標準クラスは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コール( 'is_visible_on_front' => 1)に1に設定していますが、DB/adminで変更されることはありません。 – sukkad

-2

使用'visible_on_front' => 1addAttribute呼び出しで。

関連する問題