2011-03-08 4 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

관련 문제