Magento: получение атрибутов из набора атрибутов без продукта - PullRequest
2 голосов
/ 18 июля 2010

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

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

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

Ответы [ 3 ]

5 голосов
/ 26 июля 2010

ОК, я понял, что мне не хватало того, что вам нужен весь набор атрибутов, а не только отдельный.Попробуйте это:

$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;

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

Приветствия, JD

5 голосов
/ 14 декабря 2011

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

$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);
}

Cheers !!

1 голос
/ 23 июля 2010

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

$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

...