Playing with Attribute Set in Magento

November 18, 2011  |  4 Comments  |  by Raj (MagePsycho)  |  Latest, Magento

Introduction

An attribute set is a collection of attributes which can be created/edited from Catalog -> Manage Attribute Sets in backend.

Some useful snippets regarding Attribute Set.

1> Getting Attribute Set Details

$attributeSetModel = Mage::getModel('eav/entity_attribute_set');
$attributeSetId	   = 9; // or $_product->getAttributeSetId(); if you are using product model
$attributeSetModel->load($attributeSetId);
print_r($attributeSetModel->getData());

2> Getting Attribute Set Id by Name

$entityTypeId = Mage::getModel('eav/entity')
				->setType('catalog_product')
				->getTypeId();
$attributeSetName	= 'Default';
$attributeSetId		= Mage::getModel('eav/entity_attribute_set')
					->getCollection()
					->setEntityTypeFilter($entityTypeId)
					->addFieldToFilter('attribute_set_name', $attributeSetName)
					->getFirstItem()
					->getAttributeSetId();
echo $attributeSetId;

Note that the following code doesn’t work

$attributeSetId = Mage::getModel('eav/entity_attribute_set')
->load($attributeSetName, 'attribute_set_name')
->getAttributeSetId();

Because if you refer to eav_attribute_set table then you can see there are lots of rows with same attribute set name(for example: Default)

3> Getting all Attribute Sets by Entity Type(catalog_product)

$entityTypeId = Mage::getModel('eav/entity')
				->setType('catalog_product')
				->getTypeId();
$attributeSetCollection = Mage::getModel('eav/entity_attribute_set')
				->getCollection()
				->setEntityTypeFilter($entityTypeId);
foreach($attributeSetCollection as $_attributeSet){
	print_r($_attributeSet->getData());
}

Alternatively, you can also use:

$attributeSets = Mage::getModel('catalog/product_attribute_set_api')->items();
foreach($attributeSets as $_attributeSet){
	print_r($_attributeSet);
}

4> Getting all attributes in an Attribute Set

$attributes = Mage::getModel('catalog/product_attribute_api')->items($attributeSetId);
foreach($attributes as $_attribute){
	print_r($_attribute);
}

5> Filtering Products by Attribute Set

$productCollection = Mage::getModel('catalog/product')
					->getCollection()
					->addAttributeToSelect('*')
					->addFieldToFilter('attribute_set_id', $attributeSetId);
foreach($productCollection as $_product){
	print_r($_product->getData());
}

Hope you will find these snippets useful/helpful.
Please do share if you have any useful code snippets regarding Attribute Set.

Thanks for reading!

Posted in Latest, Magento and tagged , , , , , . Bookmark the permalink.

About Raj (MagePsycho)

Raj, the guy behind MagePsycho is a Zend PHP5 Certified Engineer, Magento Certified Developer, Magento Moderator / Freelancer with specialization in web applications (CMS, E-Commerce, ERP etc.). Catch him on: Twitter: @magepsycho Skype: magentopycho
  • Nara123

    Great Snippets for Magento Developers.

    Can you also share your findings about Tax module. I was searching for finding tax rate by customers tax class but I did not find any good posts after googling for some hours.

    Thanks Again

  • http://www.freshwebservices.com Eddie May (@freshwebs)

    Thanks for this.
    Just noticed a typo ..’Hope you will find these snippets useful/helful.’ Is ‘helful’ a Freudian slip, seeing how coding for Magento can seem like hell sometimes?
    Cheers,

    • http://www.magepsycho.com MagePsycho

      Thanks for reporting.
      Typo has been fixed :)

  • http://webflakestudio.com WebFlakeStudio

    For performance optimization, it’s better to use following code for getting product entity id:


    Mage::getSingleton('eav/config')->getEntityType('catalog_product')->getId()