2

私はどこでも答えを探しましたが、Magento を混乱させましたが、有効な解決策が見つかりません。私はmagento属性を動的に作成していますが、それは問題ありませんが、それに関しては

  • 値の設定
  • デフォルト値の設定
  • オプションを追加する
  • 属性を検索可能にする

何も機能していないようです。

これが属性を追加するための私のコードです

$key = "Brand";
$name = "brand";
$specific = "Cola";
$installer->addAttribute('catalog_product', $name, array(
    'type'       => 'varchar',
    'input'      => 'select',
    'backend'           => '',
    'frontend'          => '',
    'label'             => $key,                                                    
    'class'             => '',
    'source'            => '',
    'global'            => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL,
    'visible'           => true,
    'required'          => false,
    'user_defined'      => true,
    'default'           => '',
    'searchable'        => true,
    'filterable'        => true,
    'comparable'        => true,
    'visible'      => true,
    'visible_on_front'   => true,
    'visible_in_advanced_search'   => true,                                                 
    'unique'            => false,
    'apply_to'          => '',
    'is_configurable'   => false,
    'option'        => array(
        'values'    => array($specific)
    )
));
$installer->endSetup();

$attrID = $installer->getAttribute('catalog_product', $name,'attribute_id');
$attr = Mage::getModel('eav/entity_attribute')->load($attrID);
$attr->setStoreLabels(array(1 => $key))->save();

それは問題なく追加され、オプションも追加されますが、そのオプションをデフォルトとして設定できず(後で追加するため)、検索可能にできません。

誰かが助けてくれることを本当に願っています。

ありがとう

アップデート:

このコードを使用して、デフォルト(まだ検索できないなど)を追加することができました。

$key = "Brand";
$name = "brand";
$specific = "Cola";
$installer->startSetup();
$installer->addAttribute('catalog_product', $name, array(
    'type'       => 'int',
    'input'         => 'select',
    'backend'           => '',
    'frontend'          => '',
    'label'             => $key,                                                    
    'class'             => '',
    'source'            => 'eav/entity_attribute_source_table',
    'global'            => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL,
    'visible'           => true,    
    'required'          => false,
    'user_defined'      => true,
    'default'           => '',
    'searchable'        => true,
    'filterable'        => true,
    'comparable'        => true,
    'visible'      => true,
    'visible_on_front'   => true,
    'visible_in_advanced_search'   => true,                                                 
    'unique'            => false,
    'apply_to'          => '',
    'is_configurable'   => false,
    'option'        => array(
        'value' => array(
                $this->getAttributeName($specific) => array($specific)
        )
    )
));
$installer->endSetup();

$attrID = $installer->getAttribute('catalog_product', $name,'attribute_id');
$attr = Mage::getModel('eav/entity_attribute')->load($attrID);
$attr->setStoreLabels(array(1 => $key));
$attr->setDefaultValue($attr->getSource()->getOptionId($this->getAttributeName($specific)));

$attr->save();

ただし、このコードを使用して新しいオプションを追加しようとすると、 $specific = "Pepsi"; になります。

$model = Mage::getModel('catalog/resource_eav_attribute');

$option = array();

$option['attribute_id'] = $attr;                                                        
$option['value'][$this->getAttributeName($specific)][1] = $specific;

$setup = new Mage_Eav_Model_Entity_Setup('core_setup');
$setup->addAttributeOption($option);

「デフォルトのオプション値が定義されていません」というエラーが表示されます

4

3 に答える 3

0

catalaog_eav_attribute を調べます。タイプが smallint の列「is_searchable」があります

これを試して:

'is_searchable' => 1,
于 2014-01-09T14:59:03.830 に答える
0

'is_searchable' => trueの代わりに試してみました'searchable' => trueか?

于 2013-11-20T09:11:00.220 に答える