Вроде-бы получилось для 1.5.6.
\themes\default\js\product.js
В скрипте был нюанс - вызов перерисовки вызывался несколько раз при смене набора атрибутов (кол-во атрибутов + 1 раз) и с задержкой 500 мс срабатывает проверка Url и его перерисовка. Если Вам лень было давать имена атрибутам, то все они рисуются прочерками с косой чертой и процедура проверки, естественно, считает, что Вы вручную меняли адрес и просто находит в списке атрибутов первый попавшийся с такими же параметрами - черточками и заставляет все перерисовываться заново. И так получаем вечный цикл. Чтобы этого не происходило, вводим доп. флажок и при первой такой проверке url просто игнорируем возврат "старых" настроек для атрибута. Флажок, естественно, сбрасываем .
Что сделано. При смене какого-либо атрибута идет поиск минимально отличающегося набора атрибутов для данного товара. Считается, что чем выше индекс ключа, тем меньше его вес (по-русски: чем дальше в списке атрибутов признак, тем менее он значим. Поэтому мы ищем набор атрибутов для данного товара, совпадающий с тем набором атрибутов, что мы выбрали на экране, у которого порядковый номер признака наибольший). Он и принимается за основу и под него меняются адрес страницы и набор параметров товара.
"Но".
Первый изменяемый признак имеет более высокий статус, поэтому для смены нижестоящих атрибутов приходится прибегать к уловке - найти группу атрибутов, отличную от текущей, в которой минимальный ключ отличия. Поэтому данный признак отбора неприменим, если набор по умолчанию совпадает с выбором пользователя и окно выбора - ссылка (например, цвет). Это происходит потому, что в начале не выбран набор атрибутов. Пришлось искусственно его выбирать (но не отрисовывать в виде /-/-_/-_ ) и записать номер набора в переменную страницы.
Если работает не только у меня - здорово.
P.S.
По ходу дела выяснилась пара интересных моментов:
1 Break из цикла не работает - пришлось использовать do - while
2 Пытался сделать Break на Label и получил полный крах (Я знаю, что использование переход дурной тон. И в коде их нет.)
3 Все переменные взаимосвязаны. Если счетчик массива превысит его размер, то, почему-то, опросить его размер уже не получится, хотя обращения к самому массиву по индексу нет.