Пример реализации TV со списком значений, который формируется в сниппете. Вы можете написать свой сниппет на примере моего. В данном случае формируется список методов доставки из настроек SHK3.

  1. Создаем сниппет с названием "tvGetDelivery" с таким кодом:
/*

tvGetDelivery
TV input Option Values:

@EVAL return $modx->runSnippet('tvGetDelivery');

*/

$modelpath = $modx->getOption('core_path') . 'components/shopkeeper3/model/';
$modx->addPackage( 'shopkeeper3', $modelpath );

$deliveryConfig = $modx->getObject( 'shk_config', array('setting' => 'delivery') );
$deliveryConfig = $deliveryConfig ? json_decode( $deliveryConfig->get('value'), true ) : array();

$temp = array('- Not selected -==');
foreach($deliveryConfig as $conf){
    $temp[] = $conf['label'] . '==' . $conf['price'];
}

return implode( '||', $temp );
  1. Создаем TV с именем "delivery_type". На вкладке "Параметры ввода" (input options) выбираем "Тип ввода" (Input Type) = "Список (одиночный выбор)".

  2. В поле "Возможные значения" (Input Option Values) вставляем такой код:

@EVAL return $modx->runSnippet('tvGetDelivery');
  1. Привязываем TV к шаблону и сохраняем.

Готово. Теперь в параметрах документа (ресурса) у нас есть такой список:

0_1484566634496_screenshot_014.png