我需要以编程方式创建多个属性。
以下是我升级脚本的一部分:
$dataOrder = array(
'attribute_set' => 'Main',
'group' => 'Datawarehouse',
'type' => 'int',
'input' => 'text',
'label' => 'Total order quantity',
'global' => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL,
'required' => 0,
'comparable' => 0,
'searchable' => 0,
'unique' => 0,
'user_defined' => 1,
'visible_on_front' => 1,
'visible' => 1,
'is_filterable' => 1,
'used_for_sort_by' => 1,
'used_in_product_listing' => 1,
);
我的脚本运行正常,我的所有属性都已创建,但我无法在Sort by
下拉列表(前端)中看到它们。在后台我可以看到我的属性,我可以分配一个值,一切都很好。
但在Catalog -> Manage Attributes -> Properties -> Frontend properties
下:用于产品列表中的排序设置为'否'。
我认为used_for_sort_by
和used_in_product_listing
就足够了,但看起来并非如此。
如何将其设置为是,而无需在后台更改?通过在我的升级脚本中添加一些行或在其他地方添加一些代码。
编辑我刚才意识到它不仅用于产品列表中的排序,而且还没有正确的更新方式。低于required
的所有内容都不会更新应有的方式,所有内容都设置为“否”#。
答案 0 :(得分:1)
您很可能在不推荐使用的类上调用addAttribute()方法。尝试:
$installer = Mage::getResourceModel('catalog/setup', 'catalog_setup');
$installer->addAttribute(Mage_Catalog_Model_Product::ENTITY, 'attribute_id', $dataOrder);
答案 1 :(得分:0)
我认为这样做会很好。 'used_for_sort_by' => true
应该有用。
$eavSetup->addAttribute(
\Magento\Catalog\Model\Product::ENTITY,
'sell_counts',
[
'type' => 'text',
'backend' => '',
'frontend' => '',
'label' => 'Sell Count',
'input' => 'text',
'class' => '',
'source' => '',
'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_GLOBAL,
'visible' => true,
'required' => false,
'user_defined' => false,
'default' => '',
'searchable' => true,
'filterable' => true,
'comparable' => true,
'visible_on_front' => true,
'used_in_product_listing' => true,
'used_for_sort_by' => true,
'unique' => false,
'apply_to' => ''
]
);