我已經在我的Magento商店中設置了一個屬性集,其中有幾個二進制屬性。Magento:從沒有產品的屬性集中獲取屬性
對於下拉列表,我需要列出這一個屬性集中的所有屬性,包括它們的內部名稱和它們的標籤。由於這種下拉應該出現在不一定有產品選擇的地方,所以我不能走通常的「獲取產品屬性」的路線。
我該如何着手獲取我的設置中所有屬性的列表?
我已經在我的Magento商店中設置了一個屬性集,其中有幾個二進制屬性。Magento:從沒有產品的屬性集中獲取屬性
對於下拉列表,我需要列出這一個屬性集中的所有屬性,包括它們的內部名稱和它們的標籤。由於這種下拉應該出現在不一定有產品選擇的地方,所以我不能走通常的「獲取產品屬性」的路線。
我該如何着手獲取我的設置中所有屬性的列表?
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
試試這個片段,它應該會給你想要的,除了多選屬性。
$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
不,只是返回一個空數組。 :( – Sorcy 2010-07-25 19:22:01
爲了獲得在設置屬性的所有屬性,你可以使用如:
$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);
}
乾杯!
好多了,當我使用你的代碼時,我得到了一個屬性列表,但不是我自定義的。我通過將「 - > setEntityTypeFilter」從4改爲10來獲得這些屬性,儘管我不確定爲什麼是10.我剛剛到達那裏隨機嘗試。:) 無論如何,謝謝。 – Sorcy 2010-07-27 12:10:20
沒問題。您應該能夠通過查看數據庫中的eav_entity_type表來查找您的實體的ID。看起來像10 =銷售/ quote_payment,至少在法師v1.4.1 高興它爲你工作:) JD – 2010-07-27 23:31:07
感謝編輯@FabianBlechschmidt – 2014-09-29 07:49:24