Magento - 如何以编程方式创建属性,可以在'排序依据'

时间:2015-07-16 13:44:15

标签: magento sorting attributes product

我需要以编程方式创建多个属性。

以下是我升级脚本的一部分:

$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_byused_in_product_listing就足够了,但看起来并非如此。

如何将其设置为是,而无需在后台更改?通过在我的升级脚本中添加一些行或在其他地方添加一些代码。

编辑我刚才意识到它不仅用于产品列表中的排序,而且还没有正确的更新方式。低于required的所有内容都不会更新应有的方式,所有内容都设置为“否”#。

2 个答案:

答案 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' => ''
            ]
        );