Как получить все значения TV?

Здравствуйте. Пытаюсь получить на сайте все значения TV «goodsx»

Нашел вроде функцию — но она ничего не возвращает…

function getTvArrayVal($tvName)
        {
                global $modx;
                $getTV = $modx->getObject('modTemplateVar',array('name'=>$tvName));
                $getTV = $getTV->get('elements');
                $getTV = explode('||',$getTV);
                foreach($getTV as $key => $value)
                        {
                                $row = explode('==',$value);
                                $result[$row[1]] = $row[0];
                        }
                return $result;
}

//$tvs = getTvArrayVal("goodsx");
Попытался еще одним способом — тоже тишина

$tv = $modx->getObject('modTemplateVar',array('name'=>'goodsx'));
$tvs = $tv->get('elements');
print_r($tvs);
Может я не в том направлении смотрю? Подскажите пожалуйста. Сниппет getResourceField выводит только у одного ресурса TV.

Конечно можно вызывать рекурсивно сниппет в сниппете, но это не есть верное решение
Николай
16 сентября 2013, 10:49
modx.pro
4
8 946
0

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

Николай
18 сентября 2013, 17:00
0
Может быть далеко не лучшее решение, но у меня сдали нервы =)

$mass = explode(',', $idsx);

$result = array();

for ($i=0; $i<count($mass); $i++) {
$page = $modx->getObject('modResource', $mass[$i]);
array_push($result, $page->getTVValue('goodsx')); }

$result = array_values(array_unique($result));

for ($i = 0; $i<count($result); $i++) {
echo '<option value="'.$result[$i].'">'.$result[$i].' см</option>'; }
Собственно idsx мы передаем сниппетом msProduct
    Василий Наумкин
    18 сентября 2013, 17:23
    9
    0
    <?php
    $tvid = 1; // id нужного ТВ параметра
    $res = array(); // Сюда забиваем результаты
    
    $q = $modx->newQuery('modTemplateVarResource', array('tmplvarid' => $tvid));
    $q->select('contentid,value');
    if ($q->prepare() && $q->stmt->execute()) {
    	while ($row = $q->stmt->fetch(PDO::FETCH_ASSOC)) {
    		$res[$row['contentid']] = $row['value'];
    	}
    }
    print_r($res);

    Получишь массив с id ресурсов и значенями ТВ c id = 1.
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      2