Топик пишется в ответ на поднятую тему здесь.
Кратко задача: при редактировании документа 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');