2011-09-26 48 views
19

通過attribute_code屬性模式,我怎麼能拿Attribute model(來源:eav_attribute表)在Magento的attribute_code
注意:
- 我不在乎什麼是entity_type。
非常感謝。獲取在Magento

回答

50

你必須知道entity_type,因爲你可以有不同的實體相同attribute_code。因此,要獲得屬性模型:

$attributeModel = Mage::getModel('eav/entity_attribute')->loadByCode($entity_type, $attributeCode); 

$entity_type參數可以numeric(直接ID)是string(例如'catalog_product'Mage_Catalog_Model_Product::ENTITY),也可以是模型的實例Mage_Eav_Model_Entity_Type

+0

謝謝。我會盡力向你確認結果。 – vietean

+0

我使用上面的代碼來確定short_description是否在'前端產品視圖頁上可見': $ attributeShortDescription = Mage :: getModel('eav/entity_attribute') - > loadByCode('catalog_product','short_description 「); $ attributeShortDescription-> getIsVisibleOnFront();使用常數 –

+6

版本: $ _attr =法師:: getModel( 'EAV/entity_attribute') - > loadByCode(Mage_Catalog_Model_Product :: ENTITY,$ attributeCode); –

0

$ attributeModel =法師:: getModel ('eav/entity_attribute') - > loadByCode(1,'is_approved'); echo $ attributeModel-> getAttributeId();

+0

它不僅具有僅針對多種情況中的一種情況的數據,而且還回應了已接受的答案,代碼沒有格式化,也沒有解釋。 –

3

也許你可以讀通過過濾器的屬性集合

Mage::getModel('eav/entity_attribute')->getCollection()->addFieldToFilter('attribute_code', array('in' => $codes)) 

因爲我需要從代碼產品的屬性,我不喜歡這樣寫道:

$codes = (array) $codes; 
    $res = array_intersect_key($this->getAttributes(), array_flip($codes)); 

$代碼是attribute_code -array 範圍:擴展Mage_Catalog_Model_Product

3
$attribute_code = "flat_printing_quantity"; 
$attribute_details = 
Mage::getSingleton("eav/config")->getAttribute(Mage_Catalog_Model_Product::ENTITY, $attribute_code); 
$attribute = $attribute_details->getData(); 
echo $attribute['attribute_id'];