今天,我们试图
在Magento 中获取select(下拉)和multi-select属性的存储值和默认转换后的值,这有点麻烦,所以我们决定与社区共享解决方案。在直接提出解决方案之前,让我们分享一下需要默认值和下拉/多选存储值的情况。
我们的一位客户要求我们在分层导航中显示颜色属性的色板。如果在非多语言站点上实现该解决方案可能是一个非常简单的解决方案,因为我们可以为色板图像指定与颜色标签相同的名称,例如,黑色色板可以命名为black.gif,但是我们遇到的情况是我们必须为5家商店实施此操作,并且所有商店都使用不同的语言,这意味着我们最终可能拥有5张黑色图片而不是1张黑色图片,这当然不是理想的解决方案。因此,我们提出了一种解决方案,可以使用以下代码获取原始颜色并存储给定颜色的标签值:
$attributeLabels = Mage::getModel('eav/entity_attribute_option')
->getCollection()
->setStoreFilter()
->join('attribute','attribute.attribute_id=main_table.attribute_id',
'attribute_code');
foreach ($attributeLabels as $attributeLabel) :
if ($attributeLabel->getAttributeCode() == 'color' &&
$attributeLabel->getStoreValue()==$_item->getLabel())
$label = $attributeLabel->getDefaultValue();
endforeach;
请注意,getDefaultValue()和getStoreValue()函数,getDefaultValue()将返回实际颜色的默认值,而getStoreValue()将返回商店定义的颜色或颜色标签。在我们的例子中,我们将始终使用默认值,因为我们希望每种颜色只能有一张图像。
希望本文对您有所帮助。请留下您的评论,让我们知道您的想法?谢谢。