Magento - Как отобразить только атрибуты, которые назначены продуктам? - PullRequest
0 голосов
/ 09 марта 2011

У меня есть следующий код, но он отображает все параметры атрибута.Я хочу отображать только те, которые были назначены для продукта.Что бы я изменил, чтобы сделать это?

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

Ответы [ 2 ]

1 голос
/ 11 марта 2011

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 голосов
/ 09 марта 2011

Как насчет этого:

$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/>";
    } 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...