Создание ресурсов + TV, через Modx API
        Добрый день.
Необходимо создать 300 ресурсов.
Как заполнять поля из массива pagetitle, alias и т.д я нашел.
пытался таким образом:
    
    
                                                                                
            Необходимо создать 300 ресурсов.
Как заполнять поля из массива pagetitle, alias и т.д я нашел.
$array = array(
 array(
  'title' => 'Ресурс 1',
  'alias' => 'res1',
  'idс' => '1'
 ),
 array(
  'title' => 'Ресурс 2',
  'alias' => 'res2',
  'idс' => '2'
 ),
 array(
  'title' => 'Ресурс 3',
  'alias' => 'res3',
  'idс' => '3'
 ),
);
foreach($array as $v){
    $res = $modx->newObject('modResource');                        
    $res->set('template', 1);             
    $res->set('isfolder', 0);             
    $res->set('published', 0);           
    $res->set('createdon', time());      
    $res->set('pagetitle', $v['title']);   
    $res->set('alias', $v['alias']);  
    $res->set('parent', 2);
    $res->save();
}Вопрос как проставить значения в ТV из поля idc?пытался таким образом:
$docId= $res->get('id');
    $tvDoc = $modx->getObject('modResource', $docId);
    $tvDoc->setTVValue(1, $v['idc']);
    $tvDoc->save();    Комментарии: 11
$tvDoc = $modx->getObject('modResource',  $docId);
if ($tvDoc) {
	$tvDoc->setTVValue(1,  $v['idc']);  // 1 - ID TV
	$tvDoc->save();
}            $array = array(
 array(
  'title' => 'Ресурс 1',
  'alias' => 'res1',
  'idс' => '1'
 ),
 array(
  'title' => 'Ресурс 2',
  'alias' => 'res2',
  'idс' => '2'
 ),
);
foreach($array as $v){
    $res = $modx->newObject('modResource');                        
    $res->set('template', 1);             // Назначаем ему нужный шаблон
    $res->set('isfolder', 0);             // Указываем, что это не контейнер   
    $res->set('published', 0);            // Неопубликован
    $res->set('createdon', time());       // Время создания
    $res->set('pagetitle', $v['title']);        // Заголовок
    $res->set('alias', $v['alias']);   // Псевдоним
    $res->set('parent', 2);              // Родительский ресурс
    $res->save();
    
    $docId= $res->get('id');
    $tvDoc = $modx->getObject('modResource',  $docId);
    if ($tvDoc) {
    	$tvDoc->setTVValue(1,  $v['idc']);  // 1 - ID TV
    	$tvDoc->save();
    }
}пробую так, Ресурсы создаются, но в TV пусто            
                Используй процессор для создания ресурсов, там и кэш будет чистится, в этом и дело скорее всего.
                    $response = $modx->runProcessor('resource/create', array(
	'template' => 1,
	'isfolder' => 0,
	'published' => 0,
	'pagetitle' => $v['title'],
	'parent' => 2,
));
if ($response->isError()) {
	return $modx->error->failure($response->getMessage());
}
$modx->cacheManager->clearCache();
$newId = $response->response['object']['id'];
$page = $modx->getObject('modResource', $newId);
$page->setTVValue('alc', 13);
$page->save();            $array = array(
 array(
  'title' => 'Ресурс 1',
  'alias' => 'res1',
  'idс' => '1'
 ),
 array(
  'title' => 'Ресурс 2',
  'alias' => 'res2',
  'idс' => '2'
 ),
);
foreach($array as $v){
    $response = $modx->runProcessor('resource/create', array(
    	'template' => 1,
    	'isfolder' => 0,
    	'published' => 0,
    	'pagetitle' => $v['title'],
    	'alias' => $v['alias'],
    	'parent' => 2
    ));
    
    if ($response->isError()) {
    	return $modx->error->failure($response->getMessage());
    }
    $modx->cacheManager->clearCache();
    
    $newId = $response->response['object']['id'];
    
    $page = $modx->getObject('modResource', $newId);
    $page->setTVValue($v['idc'],1);
    $page->save();
}Попробовал, результат тот же(            
                Не $page->setTVValue($v['idc'],1);, а
                    $page->setTVValue(1, $v['idc']);            
                Пробовал, и снова пусто            
                    
                Держи рабочий код
В $v['idc'] затесалась кириллица.
                    $array = array(
 array(
  'title' => 'Ресурс 1',
  'alias' => 'res1',
  'idc' => '1'
 ),
 array(
  'title' => 'Ресурс 2',
  'alias' => 'res2',
  'idc' => '2'
 ),
);
foreach($array as $v){
    $response = $modx->runProcessor('resource/create', array(
    	'template' => 1,
    	'isfolder' => 0,
    	'published' => 0,
    	'pagetitle' => $v['title'],
    	'alias' => $v['alias'],
    	'parent' => 2,
    ));
    
    if ($response->isError()) {
    	return $modx->error->failure($response->getMessage());
    }
    $modx->cacheManager->clearCache();
    
    $newId = $response->response['object']['id'];
    
    $page = $modx->getObject('modResource', $newId);
    $page->setTVValue(1, $v['idc']);
    $page->save();
}Проверено.В $v['idc'] затесалась кириллица.
                Спасибо большое, работает!            
                    
                По поводу TV
Как вариант можно еще в $response массив добавить 'tv21' => $img,
где 21 — это ид TVшки
                    Как вариант можно еще в $response массив добавить 'tv21' => $img,
где 21 — это ид TVшки
                Чтобы в процессоре задавать TV, нужно писать так:
                    $array['tvs'] = 1;  //указываем что будут TV
            $array['tv6'] = $tv6value //Указываем id TV
            $array['tv7'] = $tv7value;
            $array['tv8'] = $tv8value;            
                Долго сражался с API. Все ему не слава богу. То половина ресурсов создается, а половина нет, то ТВ не заполняются, то вообще не работает ибо бубен шамаский не тот… В общем победил вот таким кодом. Делюсь, вдруг кому тож пригодится.
                    foreach($addArr as $key => $val){
    $rss = $modx->newObject('modResource');
    $rss->set('template', 17);                     // Назначаем ему нужный шаблон
    $rss->set('isfolder', 1);                         // Указываем, что это не контейнер   
    $rss->set('published', 1);                      // Неопубликован
    $rss->set('createdon', time());              // Время создания
    $rss->set('pagetitle', $val[0]);               // Заголовок
    $rss->set('alias', strtolower($val[0]));    // Псевдоним
    $rss->set('parent', $startID);                 // Родительский ресурс
    $rss->save(); 
    
    $nid = $rss->get('id');      //получаем ID созданного ресурса
    
    $tvcid = $modx->getObject('modTemplateVar',array('name'=>'cid'));       // Указываем имя нужного TV
    $tvcid->setValue($nid, $key);       // Записываем в TV значение
    $tvcid->save();
    unset($rss); unset($tvcid);       // Удаляем переменные
    $modx->cacheManager->clearCache();      // Кэш тоже чистим
}            
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.