Марат Марабар

Марат Марабар

Был в сети 21 февраля 2021, 23:35
Заказы не принимаю
Отправить деньги
Ясно.
Создавай сниппет, если не получилось — спрашивай что не так, с публикацией твоего варианта сниппета. И обязательно кто-нибудь исправит, если будет что исправлять.

Можно использовать postHooks в Login, можно плагином решить вопрос. Варианты есть.

Если терпит, и никто не подскажет, то в понедельник/вторник буду у нормального компа — помогу.
Держи рабочий код

$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'] затесалась кириллица.
Используй процессор для создания ресурсов, там и кэш будет чистится, в этом и дело скорее всего.

$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();
Как вариант

$parentId= $modx->getParentIds($parent, 1);
$childIds = $modx->getChildIds($parentId[0], 1);
$result = array();

$q = $modx->newQuery('modResource', array('parent:IN' => $childIds));
$q->select('id');

if ($q->prepare() && $q->stmt->execute()) {
	while ($row = $q->stmt->fetch(PDO::FETCH_ASSOC)) {
		$result[] = $row['id'];
	}
}


print '<pre>';
print_r($result);
print '</pre>';
Вызов сниппета

[[mySnippet? &parent=`[[*parent]]`]]