Как получить в сниппете результат runsnippet

Прошу помощи
в сниппете получаю документ сниппетом pdoResources
до вывода на страницу мне нужно проверить значение TV поля этого документа
вопрос как это сделать?
вот так получил документ из которого нужно узнать значение TV — myTV
$params = array(
        'parents' => '1',
        'resources' => '2',
        'showUnpublished' => '1',
        'includeContent' => '1',
        'includeTVs' => 'myTV',
        'tpl' => 'tpl_chunk'
    );
    
    $res = $modx->runSnippet('pdoResources', $params);
Greza
05 декабря 2016, 10:05
modx.pro
1
5 729
0

Комментарии: 8

Захарий
05 декабря 2016, 17:14
0
Вариантов масса, но лучше, конечно, прямым запросом в базу(SELECT *
FROM `modx_tmplvar_contentvalues`… ) или xPDO & MODX API(тут тоже можно напрямую)
$page = $modx->getObject('modResource',$where);
$tvValue = $page ->getTVValue('myTV');
Если нужны все твшки все дочерних документов, то через метод
$page = $modx->getIterator('modResource',$where);
А потом в цикле пройтись. В вашем случае, проверку можно пройти в чанке tpl_chunk, там она будет доступна через феном
$_pls['tv.myTV']
Обычным парсером, вроде как: [[+myTV]] ну или [[+tv.myTV]]
    Greza
    06 декабря 2016, 01:19
    0
    Пример в ответе не вяжется с примером в вопросе
    Я знаю как получать TV у ресурсов
    вопрос в том как получать TV поле у полученных ресурсов в результате работы сниппета
    вот получил я результат $res, а дальше что, как узнать значение поля myTV ресурсов из полученного результата?
    Прошу прощения заранее, возможно мой вопрос совсем простой, но не нашел нигде ни примеров ни ответов, вот и обратился за помощью.
      Воеводский Михаил
      06 декабря 2016, 02:11
      0
      В массив параметров добавить элемент 'includeTVs'=>'myTV'
      После этого значения данного поля будут в массиве результатов, дополнительные запросы не потребуются.
        Greza
        06 декабря 2016, 02:21
        0
        Так там есть такой элемент
        вот же код первоначальный
        $params = array(
                'parents' => '1',
                'resources' => '2',
                'showUnpublished' => '1',
                'includeContent' => '1',
                'includeTVs' => 'myTV',
                'tpl' => 'tpl_chunk'
            );
            
            $res = $modx->runSnippet('pdoResources', $params);
        вопрос в том как проверить какое значение в myTV у каждого ресурса в результате $res?
        Я понимаю, что в массиве результатов уже есть то что надо
        КАК получить эти значения из $res, вот чего не знаю и о чем спрашивал.
          Илья Уткин
          06 декабря 2016, 08:06
          0
          Результат работы runSnippet — это HTML-код (текст). Либо надо его парсить, либо просто проверять значения ТВ отдельным запросом
            Илья Уткин
            06 декабря 2016, 08:06
            0
            Оба варианта — это дичь
              Илья Уткин
              06 декабря 2016, 08:08
              0
              Если нужно отфильтровать по значению ТВ, используйте фильтр по ТВ (tvFilters). Если нужно оформить в соответствии со значением, используйте или Fenom в чанке, или параметр prepareSnippet.
            Василий Наумкин
            06 декабря 2016, 09:16
            +1
            Можно указать параметр
            'return' => 'json',
            а дальше дело техники.
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      8