Если элемент1, элемент2, элемент3 - это доп. свойства товаров, то можно сортировать эти товара по одному из доп. свойств. Пример кода:
<?
$shop = & singleton('shop');
$param = array();
$external_propertys = array();
$param['current_group_id'] = false;
$param['xml_show_group_type'] = 'all';
$param['items_on_page'] = 10;
// Ограничение по доп. свойству
$element['type'] = 1; // 0 - основное св-во, 1 - дополнительное
$element['property_id'] = 194; // идентификатор доп. св-ва
$element['prefix'] = ' AND '; // префикс
$element['if'] = '!='; // Условие
$element['value'] = "''"; //
$element['sufix'] = '';
$param['select'][] = $element;
// Сортируем как строку
$param['items_field_order'] = ' shop_properties_items_table.shop_properties_items_value';
$param['items_order'] = 'DESC';
$shop->ShowShop(1,'МагазинКаталогТоваров', $param, $external_propertys);
?>
Для сортировки товаров по доп. свойству типа "число" в качестве значения параметра $param['items_field_order'] используйте:
// Сортируем как число
$param['items_field_order'] = ' CONVERT(shop_properties_items_table.shop_properties_items_value, UNSIGNED)';
для свойства типа "ДатаВремя":
// Сортируем как ДатуВремя
$param['items_field_order'] = " CONVERT(CONCAT(SUBSTR(shop_properties_items_value, 7, 4), CHAR(45), SUBSTR(shop_properties_items_value, 4, 2), CHAR(45), SUBSTR(shop_properties_items_value, 1, 2), CHAR(32), SUBSTR(shop_properties_items_value, 12, 8)) , DATETIME)";
для свойства типа "Дата":
// Сортируем как Дату
$param['items_field_order'] = " CONVERT(CONCAT(SUBSTR(shop_properties_items_value, 7, 4), CHAR(45), SUBSTR(shop_properties_items_value, 4, 2), CHAR(45), SUBSTR(shop_properties_items_value, 1, 2)), DATE)";