Ну, если говорить про конструкторы товара, то я в модуле наклеек на стену использовал динамическое создание аттрибутов. Там такой замут интересный... Ну, по дефолту добавление товара в корзину это ajax запрос. Но мы делаем unbind для #button-cart и перемещаем функцию в переменную. Потом вешаем на #button-cart свой ajax запрос, который добавляет атрибуты в базу, если их там ещё нет. В callback нашего запроса идет добавление в корзину. Получается конструктор т.е. товар может иметь любое количество любых допустимых атрибутов в допустимом диапазоне.
А вообще есть более простенькие модули, которые позволяют увеличивать цену по изменению какого-то параметра. Я правда сходу не нашел, но раньше на такие точно натыкался.