Magento创建一个整数的产品属性

时间:2010-09-08 01:31:34

标签: php attributes magento

显然,当您购买企业版时,您从Varien获得的支持几乎毫无价值,所以我希望这里的某个人可以带领我朝着正确的方向前进。

在Magento中我想创建一个int类型的product属性。当我从管理面板创建属性时,它将其创建为varchar。

我最终要做的是创建一个总销售属性,以便我可以使用它来按类别显示中的大多数销售产品进行分类。它是varchar的问题是,当你按此排序时,它将它排序为字符串而不是数字。

Varien告诉我,为了让它成为一个整数,我必须对数据库进行更新。在我看来,我必须将eav_attribute表中的backend_type列更改为int,并且希望将值移动到catalog_product_entity_int表而不是将其移至catalog_product_entity_varchar表。这有意义吗?还有其他人以前做过这个吗?

现在我有那个问题,这是我应该从Varien的支持中得到什么?到目前为止,他们的支持似乎毫无用处。看来如何做这么简单的事情并不是什么大问题(特别是因为我问他们该怎么做,而不是为我做这件事)

4 个答案:

答案 0 :(得分:5)

我之前从未尝试过改变现有属性的类型,并且我试图不用直接使用mysql数据库结构。这有点像直接更改正在运行的桌面应用程序中的内存位置的内容;你可以做到,但除非你确切地知道你正在做什么,否则你会留下一些不受支持的状态。此外,我无法证明这一点,但我很确定EAV实施的细节在产品的整个生命周期中都有机会,这意味着不同的版本会有不同的答案。

如果你可以从头开始,我add an attribute to the model programmatically(围绕“定义属性的键值对的最终数组”标题)。即使您无法从头开始,也可以通过编程方式创建一个整数属性,并在之前和之后对数据库进行差异化,以查看后端需要发生什么才能创建属性。

答案 1 :(得分:3)

您正在改变backend_type中的eav_attribute,但是这不会自动将属性值迁移到catalog_product_entity_int,您需要运行{ {1}} queryINSERT INTO SELECT获取您的值。

如果您创建自己的模块(无论如何都需要计算每个产品的总销售额),您可以通过mysql-install文件插入新的catalog_product_entity_varchar类型属性{{3} }。此外,blog post将为您提供开始的模块框架。

另一个选项是将属性保留为varchar并更改类别排序,以便将属性作为int进行破坏。但我认为改变类型更安全,更有效。

希望这有帮助, JD

答案 2 :(得分:0)

关于你关于支持期望的第二个问题,它取决于协议的条款是否只包括错误修复,服务器和应用程序配置等。我认为支持协议写入是不寻常的您的自定义要求的新代码,但也许我错过了重点。

他们的webpage明确表示不包括=代码开发,开发支持,自定义扩展等......

干杯, 乔纳森

答案 3 :(得分:0)

我有完全相同的问题。另外一个问题是我不想丢失属性值。

首先,您需要通过magento dataflow系统(System / ImportExport / Profiles)导出具有属性的产品。您需要创建要导出的配置文件并在导出中标记:'仅映射字段'。您可以在数据库中使用要为整数更改的sku和属性。

稍后您应该在任何模块中创建sql install文件来更改数据库:

mysql4安装-0.1.0.php     

$installer->startSetup();
$installer->updateAttribute('catalog_product', '<<your_attribute_code>>', array(
'backend_type'    => 'int',
));
$this->endSetup();
?>

稍后重新索引product_attribute和product_flat_data非常重要。

下一步是标记所有使用此属性的产品并使用“更新属性”操作,例如,您应将值设置为100。

现在再次重新索引!

并通过数据流中的另一个配置文件导入文件。

祝你好运!