2011-03-08 45 views
0

我有以下代码,但它显示了所有属性选项。我只想显示已分配给产品的那些。我会改变做什么?Magento - 如何仅显示分配给产品的属性?

$attribute = Mage::getModel('eav/config')->getAttribute('catalog_product', $id); 
    foreach ($attribute->getSource()->getAllOptions(true) as $option){ 
     echo $option['label']; 
    } 

回答

1

getAllOptions而我们需要一个集合或查询一起工作返回数组。第一部分将该集合与相关属性表加入,通常手动执行此操作并不是一个好主意,所以要小心。

$entity = 'catalog_product'; 
/* @var $options Mage_Eav_Model_Mysql4_Entity_Attribute_Option_Collection */ 

$options = Mage::getResourceModel('eav/entity_attribute_option_collection') 
    ->setAttributeFilter($id) 
    ->setStoreFilter(0); 

$options->getSelect()->join(
    array('ints'=>"{$entity}_entity_int"), 
    '(ints.value=store_value.value_id) AND (ints.attribute_id=main_table.attribute_id)', 
    '' 
)->group('option_id'); 

现在你可以通过一步的选项,

/* @var $option Mage_Eav_Model_Entity_Attribute_Option */ 
foreach ($options as $option) { 
    echo $option->getValue(); 
} 

...或转换为数组以得到回到开始的地方。

foreach ($options->toOptionArray() as $option) { 
    echo $option['label']; 
} 
0

如何:

$product = Mage::getModel("catalog/product")->load(167); 
    foreach ($product->getOptions() as $o) { 

     echo "Custom Option TYPE: " . $o->getType() . "<br/>"; 
     echo "Custom Option TITLE: " . $o->getTitle() . "<br/>"; 
    } 
+0

这不会产生任何结果。 – Chris 2011-03-09 15:57:29

相关问题