Будем думать на счет более качественного освещения проходящих встреч.
Пытаюсь в консоли обновить некоторые товары. Делаю поиск по tv и меняю некоторые свойства. Отдельно поиск работает, отдельно обновление тоже работает. А если запускать последовательно поиск и обновление, то при обновлении появляется «syntax error». В чем может быть причина? Может лучше переопределить mgr/resourceproduct/update и там добавить проверку по условию? <?php print '<pre>'; $modx->setLogLevel(3); $namespace = 'modxsite';
if(!$response = $modx->runProcessor('web/catalog/products/article/getdata', array("article" => "Н001024",),
array('processors_path' => $modx->getObject('modNamespace', $namespace)->getCorePath().'processors/',))){
print "Не удалось выполнить процессор";
return;
}
$result = $response->getResponse();
if ($object = current($result['object'])){ //print_r($object);
$params['class_key'] = 'ShopmodxResourceProduct';
$params['context_key'] = 'web';
$params['pagetitle'] = $object['pagetitle'];
$params['parent'] = $object['parent'];
$params['id'] = $object['object_id'];
$params['sm_price'] = 2070;
if(!$response = $modx->runProcessor('mgr/resourceproduct/update', $params
, array('processors_path' => $modx->getOption('core_path').'components/shopmodx/processors/',))){
print "Не удалось выполнить процессор";
return;
}
}
print '<br />OK';
Спасибо за ответ! Ну это тоже вполне было интересно узнать, даже такую малость! ))
Материала на эту тему написано на самом деле не мало уже. Один из топиков: modxclub.ru/blog/dokumentatsiya-dlya-spetsialistov/86.html Это xPDO-связи объектов, и в топике есть ссылка на документацию. Описывается это в map-файле. github.com/Fi1osof/shopModx/blob/b27b497031262d7c1bda373abf7f8f43a26858ec/core/components/shopmodx/model/shopModx/mysql/shopmodxresourceproduct.map.inc.php#L13
Да мы так, о своем пообщались :-) Нет, отчетного топика скорее всего не будет. У нас там больше такая инсайдерская беседа была (в основном встретились те, кто уже раньше был и в целом друг друга знаем уже). Но скажу, что один из результатов — это намечены регулярные встречи MODX-Клуба и обучающие курсы. Но не на этой уже неделе, так как на этой неделе мы едем в Питер на встречу питерского Клуба.
$where->innerJoin('modTemplateVarResource','TemplateVarResources'); 'TemplateVarResources.value:like' => '%valuetest%' Это вам не надо добавлять. Это общее присоединение TV-полей, и оно итак прописано в getdata-процессоре, если вы его используете. Но это что касается getdata-процессора (рекомендую для выборок использовать именно его). Но если вы чистый запрос пишите, то да, так и есть.
Разобрался, спасибо) $where = $modx->newQuery('modResource');
$where->innerJoin('modTemplateVarResource','TemplateVarResources');
$where->innerJoin('modTemplateVar','TemplateVar','TemplateVar
.id
= TemplateVarResources
.tmplvarid
');
$where->where(array(
'parent' => 2,
'deletedby' => 0,
'TemplateVar.name' => 'tvtest',
'TemplateVarResources.value:like' => '%valuetest%'
));
$resources = $modx->getCollection('modResource',$where);
Кстати, все собирался спросить: В многих местах я вижу подобные вызовы $c->innerJoin('ShopmodxProduct', 'Product'); т.е. не записано условие соединения. оно где-то в другом месте прописано? Я не смог найти ничего конкретного по этой теме.