$modx->basket->getActiveOrderID() возвращает именн

$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);
}

А в update-процессор дописать метод:

public function beforeSave(){
    if($this->object->quantity > 1){
        $this->object->quantity = 1;
    }
    return parent::beforeSave();
}

Должно сработать.