Как декодировать json tvsuperselect

Всем Привет, мне нужна помощь — установил компонент на добавление доп тв типа tvsuperselect, до этого у меня в карточке на страницах категорий и иных типах страниц выводилась информация из карточки всех tv полей кроме исключенных. Так вот — тв с типом tvsuperselect выводит информацию в формате json, а мне ее соответственно нужно как-то в человеческий вид преобразовать — помогите дополнить сниппет, ниже в примере видно что я пытался сделать, а именно добавить условный оператор прям в массив @ 'value' => ($tv->get('tmplvarid') == 48? json_decode($tv->get('value')): $tv->get('value')) @

[[ReturnAllTv?
                                        &id=`[[+id]]`
                                        &tpl=`row_par`
                                        &exclude=``
                                        &limit=`5`
                                    ]] 
row_par - <li><b>[[+caption]]:</b> [[+value]]</li>
<?php
$out = '';
$ex = explode(',', $exclude);
if(!$id) $id = $modx->resource->get('id');
if(!$limit) $limit = 100;
$i = 0;
foreach ($modx->getIterator('modTemplateVarResource', array('contentid' => $id)) as $tv) {
    $tvo = $modx->getObject('modTemplateVar', $tv->get('tmplvarid'));
    if(!$tvo) continue;
	if(in_array($tvo->get('name'), $ex)) continue;
	
    $out .= $modx->getChunk($tpl, array(
        'name' =>$tvo->get('name'),
        'caption' => $tvo->get('caption'),
        'value' =>  $tv->get('value')
    ));
	$i++;
	if($i > $limit) break;
}
return $out;
Делал вот так:
<?php
$out = '';
$ex = explode(',', $exclude);
if(!$id) $id = $modx->resource->get('id');
if(!$limit) $limit = 100;
$i = 0;
foreach ($modx->getIterator('modTemplateVarResource', array('contentid' => $id)) as $tv) {
    $tvo = $modx->getObject('modTemplateVar', $tv->get('tmplvarid'));
    if(!$tvo) continue;
	if(in_array($tvo->get('name'), $ex)) continue;
	
    $out .= $modx->getChunk($tpl, array(
        'name' =>$tvo->get('name'),
        'caption' => $tvo->get('caption'),
        'value' => ($tv->get('tmplvarid') == 48 ? json_decode($tv->get('value')) : $tv->get('value'))
    ));
    
	$i++;
	if($i > $limit) break;
}
return $out;
Evgeny
03 марта 2023, 09:29
modx.pro
268
0

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

Evgeny
10 марта 2023, 12:12
0
Подскажите пожалуйста. Может быть я чтото не так написал? постарался все максимально подробно описать
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    1