Топик пишется в ответ на поднятую тему здесь. Кратко задача: при редактировании документа TV-поле-список должен формироваться из списка дочерних документов (по parent = id текущего документа). Так как стандартное поле «Список ресурсов» не годится для этого (в нем это не предусмотрено), мы будем создавать свое собственное TV-поле. Для этого нам понадобится написать сниппет, который будет формировать список документов для селекта. Назовем его tv_resources_list. Вот его код: <?php $output = '';
$data = array( "Выберите из списка==" );
if($parent = $modx->resource->id){ $q = $modx->newQuery('modResource');
$q->where(array(
"parent" => $parent,
));
$q->select(array(
"modResource.id",
"modResource.pagetitle",
));
$s = $q->prepare();
$s->execute();
$modx->log(1, $q->toSQL());
while($row = $s->fetch(PDO::FETCH_ASSOC)){
$data[] = "{$row['pagetitle']}=={$row['id']}";
}
}
$output = implode("||", $data);
return $output; После этого создаем новое TV-поле с типом Список, а в поле Возможные значения прописываем @EVAL return $modx->runSnippet('tv_resources_list'); Собственно, всё.
Ого круто, даже не подумал о таком решении) Таким образом можно любую динамическую информацию совать в ТВ)
Именно так :) Это уже не говоря о том, что можно вообще свои собственные TV-шки создавать. Когда-нибудь доберусь и напишу про это статью.
Очень жду подобную статью.)
Вместо @EVAL можно использовать @SELECT @SELECT pagetitle,id FROM modx_site_content WHERE parent=[[+id]]
Засчитано.