$resource = $magentoProductInstance->getResource();
$value = $resource->getAttributeRawValue($productId, $attributeCode, Mage::app()->getStore());
//if the value is an option id continue with this
$optionId = $value;
return $resource->getAttribute($attributeCode)
->setStoreId(Mage::app()->getStore()->getId())
->getSource()
->getOptionText($optionId);
5条答案
按热度按时间mtb9vblg1#
这取决于你运行的Magento的版本。不同的版本有不同的功能。如果你运行的是Community Edition 1.6+,Catalog模块有一个非常好的方法 * 专为你 *!
请尝试以下操作:
如果您感兴趣,可以深入研究
Mage_Catalog_Model_Resource_Abstract
,看看这个小家伙在做什么。它本质上只是一个查询(诚然,EAV往往是一个相当复杂的查询),用于检索您所请求的一个属性(或者您所请求的多个属性,因为您也可以传递数组)。yhxst69z2#
我只是想改进@JMTyler的回答,因为我发现你不需要一个真实的的产品模型来获得
getResource()
因此,您可以使用产品ID和单例来完成它(如果您在循环中完成它,这样做会更好,因此您实际上不会多次创建模型)
dgjrabp23#
另一个简单的方法是将此“custom_attribute”添加到属性列表中,以便在检查报价项目中的产品数据时默认获取。
如果您已经在config.xml中创建了自定义模块,请添加以下内容。
6pp0gazn4#
这可能不会提供太多性能益处(如果有的话);但是,它将只提取属性值,而不提取其他列:
您还可以使用直接SQL,尽管除非性能是一个真实的的问题,否则我不推荐使用它:
5vf7fwbs5#
如果所需的产品值基于下拉列表/source-attribute,则可以执行以下操作: