Вообще из коробки в MODX-е есть политика Content Editor, но на мой взгляд она не оптимальная, поэтому в простой сборке сайта-визитки настройки контент-менеджера как раз включены дополнительно. ОК, включу в сборку магазина.
Пожалуйста. Кстати, если кому понадобится, то TV задаются в том же массиве, что и остальные параметры в виде: 'tvN' =>$value, где N — идентификатор TV-параметра. По этому поводу тоже есть что сказать очень важное. Механизм с TV-шками в resource/create и resource/update очень сильно отличается. resource/create да, просто смотрит параметры вида tv{$tvID}, и если таковые имеются, то создает соответствующие TV-шки для ресурса. А resource/update просто так их не присваивает и не обновляет. Для того, чтобы он обновил TV-шки, надо передать параметр tvs=>true. Но тут есть очень опасный подводный камень. Если передан tvs, то процессор обновит не только переданные в параметре TV-шки, но и вообще все TV-шки этого ресурса. При чем не указанные TV-шки он просто удалит. То есть если у ресурса есть 10 назначенных TV со значениями, а вы передаете а параметрах, допустим, только два TV-поля на обновления, то он эти два поля обновит, а остальные тупо удалит.
А можно будет в новой сборке настроить права доступа и панель для учетной записи контент-менеджера. Хотя наверное и в текущей сборке это не сложно настроить?
Спасибо. Я так и думал, что ты сможешь оптимизировать этот код. :) Кстати, если кому понадобится, то TV задаются в том же массиве, что и остальные параметры в виде: 'tvN' =>$value, где N — идентификатор TV-параметра.
Пришло еще два платежа по 500 рублей. Итого 5000 — 50% от заявленной суммы.
Еще 500 рублей поступило. Спасибо Ольге Ивановне OlgaPopova !
Сорри, не видел топика… Полезный материал есть здесь. По поводу приведенного примера: в целом да, он работоспособный. Но не оптимальный. Здесь есть серьезная хитрость: у тебя указан вызов конкретного 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.
Может кому пригодится… <?php
if(!$path = $modx->getOption('shopmodx.core_path')){
$path = $modx->getOption('core_path').'components/shopmodx/';
}
$path .= 'processors/';
$options = array( 'pagetitle' => 'Пример создания', 'template' => 3, 'parent' => 87, 'class_key' => 'ShopmodxResourceProduct', 'sm_currency' => 79, 'published' => true, );
$response = $modx->runProcessor('mgr/resourceproduct/create', $options, array( 'processors_path' => $path, ));
if($response->isError()){ print "error"; } print_r($response->getResponse()); print '<br />OK'; На основе комментария Fi1osof'a в этой ветке community.modx-cms.ru/blog/solutions/9448.html
Ольга Ивановна, здравствуйте! Да, действительно форма некорректно работает. На завтра поставил задачу срочную. Завтра поправлю и отпишусь.
Не получается отправить вопрос со страницы «ВОПРОС-ОТВЕТ» — sling.ru/faq/voprosyi-i-otvetyi/ ?