尺寸SKU在Magento

时间:2010-01-18 21:32:57

标签: php magento skus

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

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

在数据库中,来自eav_attribute表的'sku'属性(对于quete项目,订单项目,发票项目,货件项目)保留varchar(255)。对于Catalog_Product_Entity,属性为VarChar(64)。在任何一种情况下,它都超过34个字符。因此,我可以将SKU更改为64个字符而不对数据库进行任何更改,对吗?

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

谢谢你, Margots

3 个答案:

答案 0 :(得分: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 ..无论你喜欢什么,都可以。

答案 1 :(得分:1)

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

我建议将自定义属性添加到名为 custom_sku 的产品对象中,该属性可以是字符串,您可以根据需要进行设置。 以下是有关如何向您的安装添加自定义属性的link

答案 2 :(得分:0)

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

首先,我错误地计算了上述情况。默认情况下,Magento让SKU#最长为64。这是因为DB中最短的SKU属性(在表catalog_product_entity中)设置为varchar(64)。

  1. 将catalog_product_entity表中的SKU属性更改为varchar(255)或您想要的任何长度。如果此长度小于255,您就可以了,否则您必须更改其他SKU属性,例如订单SKU,报价SKu和DB中的其他属性

  2. 通过将SKU长度设置得过大,它会破坏Catalog-&gt; 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);
    ?>
    
  3. 现在即使您无法在目录 - >产品管理中看到完整的SKU编号,当您单独双击/编辑产品时,您将看到完整的SKU。

    我希望它很有用。

    最佳