2

如何允许所有产品的 SKU 长度超过 34 个字符(对于简单产品)?

当我添加新产品(简单)并输入超过 34 个字符时,Magento 在保存后将其削减为 34。

在数据库中,来自 eav_attribute 表的“sku”属性(用于 quete 项目、订单项目、发票项目、装运项目)包含 varchar(255)。对于 Catalog_Product_Entity,属性是 VarChar(64)。无论哪种情况,它都超过 34 个字符。因此,我可以在不更改数据库的情况下将 SKU 更改为 64 个字符,对吗?

我怎么做?我对用户端的 magento 代码有很好的理解,但对管理端却没有。您能否建议我在管理方面进行更改的好教程,这可以帮助我自己解决这个问题。

谢谢你,玛戈茨

4

3 回答 3

2

还有比这更多的......

更改 SKU 字段:catalog_product_entity 为 varchar(255) 更改 SKU 字段:catalog_product_flat_some_number 为 varchar(255)

然后您将不得不编辑 Sku.php,以便验证不会在管理员中触发。

变化:const SKU_MAX_LENGTH = 64;

到:const SKU_MAX_LENGTH = 255;

这将允许 max_length 为 255 而不是 64 .. 随心所欲。

于 2012-01-17T18:18:30.230 回答
1

@latvian您提出的作为解决方案的修改不是一个好主意,因为它破坏了与核心安装的兼容性,并且在将来升级核心时可能会产生不可预测的行为。这种快速而肮脏的解决问题的方式只会在未来产生问题。

我建议向产品对象添加一个名为custom_sku的自定义属性,该属性可以是一个字符串,您可以根据需要创建任意时间。这是有关如何将自定义属性添加到安装的链接。

于 2010-03-23T09:37:21.700 回答
0

我自己得到了这个。这就是我所做的。

首先,我在上面的计数上犯了错误。默认情况下,Magento 允许 SKU# 最长为 64。这是因为数据库中最短的 SKU 属性(在表 catalog_product_entity 中)设置为 varchar(64)。

  1. 将 catalog_product_entity 表中的 SKU 属性更改为 varchar(255) 或您想要的任何长度。如果此长度小于 255,则可以,否则您必须更改数据库中的其他 SKU 属性,例如 Order SKU、Quote SKU 和其他

  2. 通过将 SKU 长度设置得太大,它会破坏 Catalog->Product Manage 中的网格。一种解决方案是在 /design/adminhtml/default/default/template/widget/grid.phtml 第 157 行(在此行之后:)中插入以下<?php foreach ($this->getCollection() as $_index=>$_item): ?>代码

    <?php //truncates SKU when too large
    $sku = $_item->getData('sku');
    if(strlen($sku)>60){
        $sku = substr($sku,0,60);
    }
    $_item->setData('sku',$sku);
    ?>
    

现在即使您无法在目录->产品管理中看到完整的 SKU 编号,当您单独双击/编辑产品时,您也会看到完整的 SKU。

我希望它有用。

最好的

于 2010-01-27T22:05:08.410 回答