但是在前端,该属性现在显示为“ my attribute: No " instead of " N / A” .
它看起来像一个bug,因为我在编辑新产品时没有触及属性 .
有没有办法处理它或在我的phtml中应用一些规则?
2 回答
1
实际上这不是一个bug . 这是一个功能 . 当该属性的表 catalog_product_entity_int 中没有记录时,将显示 N/A . 添加属性时,任何产品的该属性都没有值,但只要保存具有该属性的产品,就会在表中插入空值(如您所述) . 所以 no value 与 null value 不同 . 所有的魔力都发生在这里 Mage_Catalog_Block_Product_View_Attributes::getAdditionalData() . 这些是您感兴趣的行:
if (!$product->hasData($attribute->getAttributeCode())) { // no value in the database
$value = Mage::helper('catalog')->__('N/A');
} elseif ((string)$value == '') { // empty value in the database
$value = Mage::helper('catalog')->__('No');
}
2 回答
实际上这不是一个bug . 这是一个功能 .
当该属性的表
catalog_product_entity_int
中没有记录时,将显示N/A
.添加属性时,任何产品的该属性都没有值,但只要保存具有该属性的产品,就会在表中插入空值(如您所述) . 所以
no value
与null value
不同 .所有的魔力都发生在这里
Mage_Catalog_Block_Product_View_Attributes::getAdditionalData()
.这些是您感兴趣的行:
如果要更改任何内容,请覆盖此方法 .
如果您更改了任何内容,可能需要查看
Mage_Catalog_Block_Product_Compare_List::getProductAttributeValue()
.相同的系统用于在比较产品列表中显示属性值 .
我最终创建了2个观察者......一个覆盖 Mage_Eav_Model_Entity_Attribute_Frontend_Default 的getValue和其他覆盖 Mage_Catalog_Block_Product_View_Attributes 中的getAdditionalData,如下所示:
和