Getting all options of a specific attribute in Magento is fairly easy:
$attribute = Mage::getModel('eav/config')->getAttribute('catalog_product', 'color'); foreach ($attribute->getSource()->getAllOptions(true) as $option) { echo $option['value'] . ' ' . $option['label'] . "\n"; }
A more challenging task is to get the options and values that are applicable to a particular configurable product. This can solved using the following code:
// Collect options applicable to the configurable product $productAttributeOptions = $product->getTypeInstance(true)->getConfigurableAttributesAsArray($product); $attributeOptions = array(); foreach ($productAttributeOptions as $productAttribute) { foreach ($productAttribute['values'] as $attribute) { $attributeOptions[$productAttribute['label']][$attribute['value_index']] = $attribute['store_label']; } }
The resulting array will consist of an associative array, indexed by the attribute label, with nested arrays containing attribute value => attribute label items.
Something like:
$attributeOptions = array( 'Color' => array( 1 => 'Green', 2 => 'Orange', ... ), 'Size' => array( 6 => 'L', 7 => 'XL', ... ), );
Stay tuned for more Magento code tips from Atwix developers!
Read more: