$modx->basket->getActiveOrderID() возвращает именно ID корзины, но не саму корзину. То есть чтобы получить объект корзины, надо сделать так:
if($order_id = $modx->basket->getActiveOrderID()){ $basket = $modx->getObject('Order', $order_id); }
Но это так, к слову.
Если говорить о вашем вопросе, и если я правильно понимаю, что главное — это чтобы товаров было только по 1 штуке максимум, то сделать надо так:
1. В add-процессоре после $this->setDefaultProperties() дописать:
if($this->getproperty('quantity') > 1){ $this->setProperty('quantity', 1); }
public function beforeSave(){ if($this->object->quantity > 1){ $this->object->quantity = 1; } return parent::beforeSave(); }
Должно сработать.