7

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

オファータイプがMagentoと属性set($ sSetID)およびグループ($ groupname)に追加されているのがわかります。magento管理UI(カタログ->属性->属性の管理)から属性を見ると、is_filterable、is_visible、is_visible_on_front、is_html_allowed_on_frontのパラメーターがNoに設定されていることがわかります。さまざまな組み合わせを試しましたが、うまくいきませんでした。MagentoCE1.7.0.2を使用しています。セットアップスクリプトに何が欠けているのかわかりません。これについては、 http: //blog.chapagain.com.np/magento-adding-attribute-from-mysql-setup-file/を参照しました。私は何かが足りないのですか?前もって感謝します。

4

2 に答える 2

7

config.xmlでインストーラーを適切に構成しましたか?magentoインストーラーの標準クラスはですMage_Eav_Model_Entity_Setupが、製品を扱う場合は、Mage_Catalog_Model_Resource_Setup代わりに使用する必要があります。なんで ?それらのメソッド_prepareValues()を見ると、許可された属性が何であるかがわかります(製品には標準のeav_objectsよりも多くのオプションがあり、テーブルeav_attributeとを比較するとわかりますcatalog_eav_attribute

優れたインストーラークラスを示すために、標準Mage_Catalog config.xmlを見て、モジュールに適合させてください。

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

ps:このメソッドは、属性を追加するときにのみ呼び出されることに注意してください_prepareValues()...属性を更新する場合は、完全なオプション名("visible"だけでなく"is_visible")を使用する必要があります...

もう1つのハックは、後でこれらの属性を追加することですが、それほど美しくはありません。

// 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()
于 2012-10-17T09:56:16.683 に答える
-2

'visible_on_front' => 1呼び出しで、を使用しaddAttributeます。

于 2016-03-31T09:24:09.120 に答える