Огромное спасибо, человечище.

да. в нем есть resource_id. тут написал modxclub.ru/blog/dokumentatsiya-dlya-spetsialistov/258.html#comment-7023

Внимательно изучи процессор core\components\billing\processors\mgr\orders\products\create.class.php — там все есть. Или можно в форму кроме product_id передавать еще и resource_id — тогда проблем вообще не будет.

$product = $this->modx->getObject('ShopmodxProduct', (int)$this->getProperty('product_id')) так?

Спасибо и на этом уже логика понятна, но не ясно как получить товар по product_id, буду думать

кодга добавляешь новый товар к заказу, с сайта приходят product_id, quantity и несколько параметров. по product_id получаешь этот товар, берешь поле options и в цикле ищешь в нем запись, в которой параметры совпадают. например, после json_decode имеем для товара $options=[ [color=red,size=1,price=100], [color=blue,size=2,price=200], [color=blue,size=4,price=400], ] в запросе передано color=blue, size=4 Ищем запись, в которой color и size совпадают, и берем цену из этой записи. Извиняюсь, но времени нет более подробные примеры писать.

да, утром закрутился, не ответил. Это позволяет задать базовую цену, а в MIGX указывать только цены, отличные от нее. Простая дань лени (или забота о менеджерах :)) т.е. если цена не зависит от опций, то достаточно указать sm_price (базовую)

Пример бы, уже сбился столку

я так понимаю не спроста вот в getdata 'price'=>$r['price']?$r['price']:$l['sm_price'],

сам товар получаешь по product_id, потом раскладываешь MIGX options в массив и по остальным параметрам, переданным в запросе, подбираешь цену.