Приступим к созданию такой TV.
Создадим сниппет «listMyResources».
В нём наша логика выбора ресурсов, беруться только опубликованные ресурсы и с родителем, которого мы укажем в ТВ, это позже.
<?php
$output[]= '-==-';
$parents = $modx->getCollection('modResource',array(
'parent' => $modx->getOption('parent',$scriptProperties),
'published' => 1,
));
foreach ($parents as $res) {
$output[]= $res->get('pagetitle').'=='.$res->get('id');
}
$out = implode("||",$output);
return $out;Создаём дополнительное поле.
Тип ввода: Список (одиночный выбор).
В «Возможные значения» пишем следующее:
@EVAL return $modx->runSnippet('listMyResources',array('parent' => 2));Вместо «2» указываем нужного родителя из которого мы хотим брать ресурсы.
Использование поля.
После этого присвойте ТВ конкретному шаблону и работайти с ним.
На сайт же выводится не заголовок, а id ресурса. Единственная особенность при выводе это то, что если ресурс не выбран, вместо пустоты выводися «-».
Поэтому проверку на пустоту делать требуется так:
Через плейсхолдеры:
[[*mytv:is=`-`:then=`Поле не заполнено`:else=`ID ресурса: [[*mytv]]`]]
Через Fenom
{if $_modx->resource.mytv != '-'}
ID ресурса: {$_modx->resource.mytv}
{else}
Поле не заполнено
{/if}Собственно и всё, думаю, как выводить информацию о ресурсе через его ID вы знаете как, если нет, пишите в комментариях.
Источник: daruse.ru/tv-dlya-vyibora-resursa-s-nuzhnyim-roditelem-i-poiskom-v-modx-revolution
Объектная
А как вывести до 5-го уровня? и что бы отображалось какой куда вложен?
или например выбрал родителя, дальше выбрал дочку, дальше еще дочку — если есть.
сори за сумбур.