На неделе аж 2 раза случилась одна и та же задачка у несвязанных клиентов. Точно надо записать. В умном фильтре появились пустые свойства, т.е. чекбокс есть, а надпись рядом отсутствует, а еще и не один пустой, а несколько. Как известно умный фильтр собирает данные свойств помеченные как участвующие в умном фильтре для текущего раздела инфоблока.
В catalog.element открываем script.js и находим функцию window.JCCatalogElement.prototype.ChangeInfo = function() . Добавляем после строки this.offerNum = index; простенький js - например, document.getElementById('quick_or').value=this.offerNum; а в код страницы добавляем скрытый input c id="quick_or". Получаем номер торгового предложения в массиве $arResult[OFFERS]. А эта строчка eventData.newId = this.offers[this.offerNum].ID; даст нам реальный ID торгового предложения
Этот вариант подойдет для готовой корзины Битрикса - вместо переадресации на оформление заказа мы будем собирать данные и создавать заказ средствами API (а не компонентов).
Брэнды, серии, производители и т.п. наиболее удобно все-таки держать в highload-блоках, но при этом в Битриксе всего два довольно убогих компонента, которые способны хоть как-то работать с выводом этих данных. Поэтому пришлось сделать небольшую кастомизацию