Данный код не сортирует элементы, а почему то оставляет только два у которых включено свойство(тип галочка).
Также в каталоге есть сортировка по наличию $Shop_Controller_Show->orderBy('in_stock'

;
Получается даже если я заставлю работать эту сортировку - она сотрет по наличию. Мб есть какой то метод, проверить есть ли в выборке - два товара по их id. Если они есть, я бы просто делал ограничение, чтобы они не попадали в общий список и добавлял бы их в xml и выводил первыми в списке. Я вижу это решение как вариант, не нарушая остальные сортировки.
$Shop_Controller_Show
->shopItems()
->queryBuilder()
->leftJoin('shop_item_properties', 'shop_items.shop_id', '=', 'shop_item_properties.shop_id'

->leftJoin('property_value_ints', 'shop_items.id', '=', 'property_value_ints.entity_id',
array(
array('AND' => array('shop_item_properties.property_id', '=', Core_QueryBuilder::expression('`property_value_ints`.`property_id`'

))
)
)
->groupBy('shop_items.id'

->where('property_value_ints.property_id', '=', 77)
->clearOrderBy()
->orderBy('property_value_ints.value', 'DESC'

;