Как массово поменять tv у ресурсов в поле tvSuperSelect ?
        Делаю вот такой простой запрос, в ресурсах вроде бы сохраняется это и видно что появляется тег, но при выводе похожих ресурсов по тегу — пусто, но если прописать в ручную и сохранить то всё норм показывается. Подскажите как правильно правильно массово добавить тег для tvSuperSelect 
Пытался еще вот так, через процессор update — тоже безрезультатно
    
    
                                                                                
            <?php
$q = $modx->newQuery('modResource');
$q->where(array(
    'parent' => 816,
    'template' => 3
    ));
$resources = $modx->getIterator('modResource', $q);
foreach($resources as $resource) {
    $content = $resource->get('content');
    $title = '["тег суперселект"]';
    $resource->setTVValue('super_select_tags', $title);
    $resource->save();
}[[tvssResources:empty=`Похожих записей не найдено`?
    &tv=`39`
    &tags=`[[tvssTags?id=`[[*id]]`&tv=`39`&tpl=`@INLINE [[+tag]]`]]`
    &parents=`0`
    &depth=`10`
    &limit=`4`
]]UPDПытался еще вот так, через процессор update — тоже безрезультатно
<?php
$id = 47535;
$resource = $modx->getObject('modResource', array('id' => $id));
if (is_object($resource)) {
    // преобразуем объект в массив
    $resource = $resource->toArray();
    // изменим заголовок страницы
    $resource["super_select_tags"] = 'Новый 4';
    // выполнение процессора    
    $response = $modx->runProcessor('resource/update', $resource);
    
    // если ошибка 
    if($response->isError()){
        echo "Произошла ошибка". $response->getMessage();
    }
    else{
        echo "Документ изменен";
    }
} else {
    echo "Документ не найден";
}    Комментарии: 7
                Могу предположить, что он в формате json хранит. Так что отправляйте как: 
                    $resource->setTVValue('super_select_tags', json_encode(["тег суперселект"]));
$resource->save();Плюс в доках сказано, что для данного TV есть отдельная таблица и он пишет в сразу в 2 таблицы, поэтому нужно посмотреть исходники, как там это реализовано, так же для вызова нужно использовать разделитель ||:{$_modx->runSnippet('tvssResources', [
    'tv' => '2',
    'tags' => $_modx->runSnippet('tvssTags', ['id' => $_modx->resource.id, 'tv' => '2', 'tpl' => '@INLINE [[+tag]]', 'outputSeparator' => '||']),
    'parents' => 0,
    'limit' => 4,
]) ?: 'Похожих записей не найдено'}            
                Как-то вот так будет работать, не тестировал. $tv_tss поменяйте на свой.
                    $modx->addPackage('tvsuperselect', MODX_CORE_PATH .'components/tvsuperselect/model/');
$tv_tss = 1; //тут нужно указать ID 'super_select_tags'
foreach($resources as $resource) {
    $content = $resource->get('content');
    $tags = ["тег суперселект"];
	
	$values = explode(',', $tags);
	
	foreach ($values as $value) {
		$where = array(
			'resource_id' => $resource->id,
			'tv_id' => $tv_tss,
			'value' => $value,
		);
		
		if (!$modx->getCount('tvssOption', $where))
		{
			$new = $modx->newObject('tvssOption');
			$new->fromArray($where);
			$new->save();
			unset($new);
		}
		
		$where = array(
			'contentid' => $resource->id,
			'tmplvarid' => $tv_tss,
		);
		
		if ($old = $modx->getObject('modTemplateVarResource', $where))
		{
			$old_values = $modx->fromJSON($old->value);
			$old_values[] = $value;
			$old->set('value', $modx->toJSON(array_unique($old_values)));
			$old->save();
		}
		else {
			$new = $modx->newObject('modTemplateVarResource');
			$new->fromArray($where);
			$new->save();
			unset($new);
		}
	
	}
}            
                у меня не работает(
находил чтото похожее и пытался адаптировать, не получилось
                    находил чтото похожее и пытался адаптировать, не получилось
                Кэш после этого чистили? Проверьте базу, пишется ли в базу.            
                    
                чистил, в базу не пишется, ни в одной таблице нет
запускаю так
                    запускаю так
<?php
$q = $modx->newQuery('modResource');
$q->where(array(
    'parent' => 816,
    'template' => 3
    ));
$resources = $modx->getIterator('modResource', $q);
$modx->addPackage('tvsuperselect', MODX_CORE_PATH .'components/tvsuperselect/model/');
$tv_tss = 39; //тут нужно указать ID 'super_select_tags'
foreach($resources as $resource) {
    $content = $resource->get('content');
    $tags = ["тег суперселект"];
	
	$values = explode(',', $tags);
	
	foreach ($values as $value) {
		$where = array(
			'resource_id' => $resource->id,
			'tv_id' => $tv_tss,
			'value' => $value,
		);
		
		if (!$modx->getCount('tvssOption', $where))
		{
			$new = $modx->newObject('tvssOption');
			$new->fromArray($where);
			$new->save();
			unset($new);
		}
		
		$where = array(
			'contentid' => $resource->id,
			'tmplvarid' => $tv_tss,
		);
		
		if ($old = $modx->getObject('modTemplateVarResource', $where))
		{
			$old_values = $modx->fromJSON($old->value);
			$old_values[] = $value;
			$old->set('value', $modx->toJSON(array_unique($old_values)));
			$old->save();
		}
		else {
			$new = $modx->newObject('modTemplateVarResource');
			$new->fromArray($where);
			$new->save();
			unset($new);
		}
	
	}
}            $resource->id нужно заменить на $resource->get('id')Он значение ID не получает, поэтому и не пишет.Это вообще можно удалить, оно не нужно:
$content = $resource->get('content');Итого:foreach($resources as $resource) {
    $tags = ["тег суперселект"];
	
	$values = explode(',', $tags);
	
	foreach ($values as $value) {
		$where = array(
			'resource_id' => $resource->get('id'),
			'tv_id' => $tv_tss,
			'value' => $value,
		);
		
		if (!$modx->getCount('tvssOption', $where))
		{
			$new = $modx->newObject('tvssOption');
			$new->fromArray($where);
			$new->save();
			unset($new);
		}
		
		$where = array(
			'contentid' => $resource->get('id'),
			'tmplvarid' => $tv_tss,
		);
		
		if ($old = $modx->getObject('modTemplateVarResource', $where))
		{
			$old_values = $modx->fromJSON($old->value);
			$old_values[] = $value;
			$old->set('value', $modx->toJSON(array_unique($old_values)));
			$old->save();
		}
		else {
			$new = $modx->newObject('modTemplateVarResource');
			$new->fromArray($where);
			$new->save();
			unset($new);
		}
	
	}
}            
                ничего не происходит            
                    
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.