Саша, привет! 1. Не может быть, чтобы просто не со
Саша, привет! 1. Не может быть, чтобы просто не сохранялось и все. Должны быть какие-то ошибки. Для выполнения процессоров в тесте советую вот этот скрипт использовать. 2. Давно уже не делал подобного, но на сколько мне память не изменяет, делать это надо так:
foreach($docs as $doc){
$doc->class_key = 'ShopmodxResourceProduct';
$doc->save();
$data = $doc->toArray();
$data = array_merge($data, array(
"sm_price" => $price,
"sm_currency" => $currency,
));
$response = $modx->runProcessor('resource/update',$data);
if($response->isError()){
print_r($response->getResponse());
return;
}
}
Дело в том, что когда процессор на обновление выполняется, он ведь все равно первоначально берет данные из БД, и соответственно получает инстанс объекта на основе класса class_key. Если не сохранить перед апдейтом с новым классом, то тогда не будет объекта ShopmodxProductObject. А вот есть уже он, тогда процессор на апдейт будет не родной MODX-овый, а расширенный магазина, и ShopmodxProduct к нему должен будет добавиться автоматически.