This is how I solved the problem. Override this file
app\code\core\Mage\Catalog\Model\Resource\Product\Compare\Item\Collection.php
as
app\code\local\Mage\Catalog\Model\Resource\Product\Compare\Item\Collection.php
Around line 220, find "public function getComparableAttributes()"
Comment the original function and replace it with the following code
/** Function overridden by nadshez to fix sort order in comparison list */
public function getComparableAttributes()
{
if (is_null($this->_comparableAttributes)) {
$this->_comparableAttributes = array();
$setIds = $this->_getAttributeSetIds();
if ($setIds) {
$select = $this->getConnection()->select()
->from(array('main_table' => $this->getTable('eav/attribute')))
->join(
array('additional_table' => $this->getTable('catalog/eav_attribute')),
'additional_table.attribute_id=main_table.attribute_id'
)
->joinLeft(
array('al' => $this->getTable('eav/attribute_label')),
'al.attribute_id = main_table.attribute_id AND al.store_id = ' . (int) $this->getStoreId(),
array('store_label' => new Zend_Db_Expr('IFNULL(al.value, main_table.frontend_label)'))
)
->joinLeft(
array('ai' => $this->getTable('eav/entity_attribute')),
'ai.attribute_id = main_table.attribute_id'
)
->where('additional_table.is_comparable=?', 1)
->where('ai.attribute_set_id IN(?)', $setIds)
->order(array('ai.attribute_group_id ASC', 'ai.sort_order ASC'));
$attributesData = $this->getConnection()->fetchAll($select);
if ($attributesData) {
$entityType = 'catalog_product';
Mage::getSingleton('eav/config')
->importAttributesData($entityType, $attributesData);
foreach ($attributesData as $data) {
$attribute = Mage::getSingleton('eav/config')
->getAttribute($entityType, $data['attribute_code']);
$this->_comparableAttributes[$attribute->getAttributeCode()] = $attribute;
}
unset($attributesData);
}
}
}
return $this->_comparableAttributes;
}
That's it. Hope this helps. Kindly one up my answer if it resolved your problem. Thanks.