如何为所有产品允许SKU超过34个字符(对于简单产品)?
当我添加新产品(简单)并输入超过34个字符时,Magento会在保存后将其减少到34个。
在数据库中,来自eav_attribute表的'sku'属性(对于quete项目,订单项目,发票项目,货件项目)保留varchar(255)。对于Catalog_Product_Entity,属性为VarChar(64)。在任何一种情况下,它都超过34个字符。因此,我可以将SKU更改为64个字符而不对数据库进行任何更改,对吗?
我该怎么做?我对用户端magento代码有很好的理解,但不是管理员方面。你能否建议我在管理方面做出改进的好教程,这可以帮助我自己解决这个问题。
谢谢你, Margots
答案 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)。
将catalog_product_entity表中的SKU属性更改为varchar(255)或您想要的任何长度。如果此长度小于255,您就可以了,否则您必须更改其他SKU属性,例如订单SKU,报价SKu和DB中的其他属性
通过将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);
?>
现在即使您无法在目录 - >产品管理中看到完整的SKU编号,当您单独双击/编辑产品时,您将看到完整的SKU。
我希望它很有用。
最佳