$modx->basket->getActiveOrderID() возвращает именн
$modx->basket->getActiveOrderID() возвращает именно ID корзины, но не саму корзину. То есть чтобы получить объект корзины, надо сделать так:
if($order_id = $modx->basket->getActiveOrderID()){
$basket = $modx->getObject('Order', $order_id);
}
Но это так, к слову.
Если говорить о вашем вопросе, и если я правильно понимаю, что главное — это чтобы товаров было только по 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();
}
Должно сработать.