如何获得具有“属性值”(option_id)的属性“选项标签/属性文本”?


18

假设我有一个属性,它是选项的集合(下拉列表/多重选择)。

我可以检索给定产品的属性值:

$store_id = [something];
$productId = [something];
// this is a select/multiselect
$attribute_code = [something]; 

$option_id = Mage::getResourceModel('catalog/product')->getAttributeRawValue($productId, $attribute_code, $store_id );
$option_label = ???

现在,我得到了属性option_id,它是一个数值...

...加载我的属性值的前端属性标签的最佳方法是什么?(不加载完整产品)

解决方案感谢Marius

// Not loading the product - just creating a simple instance
$product = Mage::getModel('catalog/product')
->setStoreId($store_id)
->setData($attribute_code,$option_id); 
$option_label = $product->getAttributeText($attribute_code);

2
为什么确切的作者多次给出这个问题,而所有这些都使用户感到困惑。我们可以在没有正确答案的情况下将这些问题标记为重复吗?作者给出的这个magento.stackexchange.com/questions/3003问题没有正确答案,但是为什么要投票(并给出自己的答案)!这个magento.stackexchange.com/questions/976也相同。也许我的要求不对,但是一个问题,一个作者却没有答案。请保持网站的质量。谢谢。
mageUz 2013年

我提高了其他问题将@Marius解决magento.stackexchange.com/questions/3003/...
法兰克福机场

1
需要注意的是,至少在Magento CE 1.9和1.14 EE及以下,getAttributeText('value')不正确,如果属性的工作getAllOptions()安排与嵌套的数组,方法返回选项(表现为一个<optgroup>下拉。)
泰勒五,

Answers:


49

除了您的代码外,还需要这样做:

$product = Mage::getModel('catalog/product')
                ->setStoreId($store_id)
                ->setBrand($brand_value); // not loading the product - just creating a simple instance
$brandLabel = $product->getAttributeText('brand');

9
$attribute = Mage::getModel('catalog/resource_eav_attribute')
            ->loadByCode(Mage_Catalog_Model_Product::ENTITY, 'manufacturer');
$label     = $attribute->getFrontendLabel();

1
我对“前端属性标签”感到困惑,请更正该问题。不是“属性标签”,而是“选项标签”或“属性文本”
mageUz 2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.