2010-07-18 212 views
2

我已經在我的Magento商店中設置了一個屬性集,其中有幾個二進制屬性。Magento:從沒有產品的屬性集中獲取屬性

對於下拉列表,我需要列出這一個屬性集中的所有屬性,包括它們的內部名稱和它們的標籤。由於這種下拉應該出現在不一定有產品選擇的地方,所以我不能走通常的「獲取產品屬性」的路線。

我該如何着手獲取我的設置中所有屬性的列表?

回答

5

OK,我意識到,我錯過了你想要的整套屬性,而不僅僅是一個單獨的一個。試試這個:

$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

+0

好多了,當我使用你的代碼時,我得到了一個屬性列表,但不是我自定義的。我通過將「 - > setEntityTypeFilter」從4改爲10來獲得這些屬性,儘管我不確定爲什麼是10.我剛剛到達那裏隨機嘗試。:) 無論如何,謝謝。 – Sorcy 2010-07-27 12:10:20

+0

沒問題。您應該能夠通過查看數據庫中的eav_entity_type表來查找您的實體的ID。看起來像10 =銷售/ quote_payment,至少在法師v1.4.1 高興它爲你工作:) JD – 2010-07-27 23:31:07

+0

感謝編輯@FabianBlechschmidt – 2014-09-29 07:49:24

1

試試這個片段,它應該會給你想要的,除了多選屬性。

$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 2010-07-25 19:22:01

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

乾杯!

相關問題