Magento -通过编程方式添加默认和可搜索属性

axzmvihb  于 2022-11-12  发布在  其他
关注(0)|答案(3)|浏览(163)

我已经到处寻找答案,通过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);

我得到的错误:“未定义默认选项值”

drnojrws

drnojrws1#

您是否尝试使用'is_searchable' => true而不是'searchable' => true

v9tzhpje

v9tzhpje2#

在catalaog_eav_attribute中查找。有一个类型为smallint的列'is_searchable'
试试看:

'is_searchable' => 1,
2skhul33

2skhul333#

参考错误:
“未定义默认选项值”
添加选项时:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
$option['value'][$this->getAttributeName($specific)][1] = $specific;
这里的[0]是选项的“默认管理值”,[1]是“默认存储值”。$option['value'][$this->getAttributeName($specific)][0] = $specific;
您的代码没有将 $specific 设置为默认选项,而是将 $specific 设置为默认存储的值。

相关问题