Как получить все значения 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.Конечно можно вызывать рекурсивно сниппет в сниппете, но это не есть верное решение
Комментарии: 2
Может быть далеко не лучшее решение, но у меня сдали нервы =)
$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 <?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.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.