Сорри, не видел топика… Полезный материал есть зде
Сорри, не видел топика… Полезный материал есть здесь. По поводу приведенного примера: в целом да, он работоспособный. Но не оптимальный. Здесь есть серьезная хитрость: у тебя указан вызов конкретного shopModx-ого процессора, но это не обязательно делать. Почему? Посмотрим на метод системного процессора resource/create modResourceCreateProcessor::getInstance()
public static function getInstance(modX &$modx,$className,$properties = array()) {
$classKey = !empty($properties['class_key']) ? $properties['class_key'] : 'modDocument';
$object = $modx->newObject($classKey);
if (!in_array($classKey,array('modDocument','modResource',''))) {
$className = $classKey.'CreateProcessor';
if (!class_exists($className)) {
$className = 'modResourceCreateProcessor';
}
}
/** @var modProcessor $processor */
$processor = new $className($modx,$properties);
return $processor;
}
Особенно обратить внимание на:
$className = $classKey.'CreateProcessor';
if (!class_exists($className)) {
$className = 'modResourceCreateProcessor';
}
То есть он на лету формирует по маске название класса-процессора для указанного class_key, и если такой объявлен, то выполняется именно этот процессор вместо системного. Итог: можно легко вызывать и системный процессор, при этом выполнится shopModx-овый в соответствии с указанным class_key. Конечный код такой:
$options = array(
'pagetitle' => 'Пример создания',
'template' => 3,
'parent' => 87,
'class_key' => 'ShopmodxResourceProduct',
'sm_currency' => 79,
'published' => true,
);
$response = $modx->runProcessor('resource/create', $options);
if($response->isError()){
print "error";
}
print_r($response->getResponse());
print '<br />OK';
Только еще не указан sm_price.