Сделать можно..
но несколько долго и возможно сложно.
Принцип такой:
Создаем товарам поле по которому будем группировать их (скажем модель), создаем поля с различиями (размер\цвет\форма)
По сути мы имеем разные товары (на деле так и есть.. и с точки зрения управления по мне этот подход лучше всего)
После чего идет "сложная" часть..
Надо заставить каталог выводить только 1 товар из этой группы.. можно делать либо ковырянием кода каталога, либо пытаться это сделать через постпроцессоры, либо через свою реализацию каталога (копия текущего с другим именем.. и его уже ковырять)
После того, как мы сделали возможным вывод товаров в одном количестве на группу (группируем по модели), в карточку товара ставим внутренний фильтр, который выводит товары только этой группы.. вывод организовываем в виде селекта\превью или чего угодно.
Т.е. что мы имеем.
Карточку товара с содержанием нужного ID товара и его ценой.
При добавлении товара мы добавим товар нужного размера\цвета\формы и нужной ценой в корзину.
При наличии скриптов можно все это дело красиво организовать с использованием AJAX, без скриптов все продолжает работать в штатном режиме.
Поисковые системы в случае использования селекта и AJAX не видят дублей товаров (различных ценой и цветом\формой\размером)
Все.. магазин работает с множественным выбором, добавление товара происходит точно так, как и раньше, группировки и все остальное происходит автоматически.