2010-07-18 2 views
2

Я установил атрибут, установленный в моем магазине Magento, который имеет несколько двоичных атрибутов.Magento: получение атрибутов из набора атрибутов без продукта

Для раскрывающегося списка мне нужен список ВСЕХ атрибутов внутри этого набора атрибутов, включая их внутреннее имя и их метку. Поскольку это раскрытие должно появляться в местах, которые не обязательно имеют выбранный продукт, я не могу идти обычным путем «получения атрибутов продукта».

Как мне получить список всех атрибутов внутри моего набора?

ответ

5

Хорошо, я понял, что я пропустил, что вы хотите, чтобы весь набор атрибутов, а не только индивидуальный. Попробуйте это:

$productEntityType = Mage::getModel('eav/entity_type')->loadByCode(Mage_Catalog_Model_Product::ENTITY); 

$attributeSetCollection = Mage::getResourceModel('eav/entity_attribute_set_collection'); 
$attributesInfo = Mage::getResourceModel('eav/entity_attribute_collection') 
    ->setEntityTypeFilter($productEntityType->getId()) //4 = product entities 
    ->addSetInfo() 
    ->getData(); 

Вам потребуется перебрать массив, который возвращается с чем-то вроде:

foreach($attributesInfo as $attribute): 
    $attribute = Mage::getModel('eav/entity_attribute')->load($attribute['attribute_id']); 
    echo 'label = '.$attribute->getFrontendLabel().'<br/>'; 
    echo 'code = '.$attribute->getAttributeCode().'<br/><br/>'; 
endforeach; 

Извините за отсутствующий оригинальную точку, надеюсь, что это помогает!

Cheers, JD

+0

Гораздо лучше. Когда я использую свой код, я получаю список атрибутов, но не мои пользовательские. Я получил их, переключив «-> setEntityTypeFilter» с 4 на 10, хотя я не уверен, почему 10. I просто получил там случайным образом. :) Спасибо в любом случае. – Sorcy

+0

Нет проблем. Вы должны найти идентификатор своего объекта, просмотрев таблицу eav_entity_type в db. Похоже, 10 = sales/quote_payment, по крайней мере, в Mage v1.4.1 Рад, что это сработало для вас :) JD –

+0

@FabianBlechschmidt –

1

попробуйте этот фрагмент, он должен дать вам нужную вам информацию, за исключением атрибутов multi-select.

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

Надеется, что это помогает, JD

+0

Нет, просто возвращает мне пустой массив. :( – Sorcy

5

Для того, чтобы получить все атрибуты в набор атрибутов, вы можете использовать как:

$entityTypeId = Mage::getModel('eav/entity') 
                ->setType('catalog_product') 
                ->getTypeId(); 
$attributeSetName   = 'Default'; //Edit with your required Attribute Set Name 
$attributeSetId     = Mage::getModel('eav/entity_attribute_set') 
                    ->getCollection() 
                    ->setEntityTypeFilter($entityTypeId) 
                    ->addFieldToFilter('attribute_set_name', $attributeSetName) 
                    ->getFirstItem() 
                    ->getAttributeSetId(); 
$attributes = Mage::getModel('catalog/product_attribute_api')->items($attributeSetId); 
foreach($attributes as $_attribute){ 
    print_r($_attribute); 
} 

Ура !!

Смежные вопросы