Пример: Хочу выводить список сотрудников на главную
<div class="team-carousel text-center"> [[getImageList? &tvname=`team` &tpl=`teamElementIndex` &limit=`0` &docid=`[[*teampageid]]` ]] </div>
Проблема в том, что есть несколько ресурсов с сотрудниками. Погуглил, нашел вариант такой:
— Получить json данные нужных TV
— Декодировать все эти данные через json_decode($tv,true)
— Объединить полученные массивы с помощью array_merge
— Закодировать полученный объединенный массив используя json_encode
— Передать его в getImageList с помощью параметра &value
Пример сниппета json_merge:
<?php $json = array(); $tvid = (int)$tvid; $tmp = explode(',',$input); foreach ($tmp as $tvs) { if ((int)$tvs > 0) { if ($tv = $modx->getObject('modTemplateVarResource', array('contentid' => (int)$tvs, 'tmplvarid' => $tvid))) { $tvj = json_decode($tv->get('value'),true); $json = array_merge($json,$tvj); } } } for($i=0; $i<count($json); $i++) { $json[$i]['MIGX_id']=($i+1); } return json_encode($json);
Вывожу так:
<div class="team-carousel text-center"> [[getImageList? &tpl=`teamElementIndex` &value=`[[json_merge? &input=`[[*teampageid]]` &tvid=`34`]]` ]] </div>
Проблема в том, что вывод «склеивает» всё в один раздел. Т.е. например 5 сотрудников из одного раздела выводятся корректно, а остальные «добавляются» к этому же разделу и не перекидывают на верный.
teamElementIndex:
<div class="item"> <div class="element"> <div class="img-wrapper"> <a href="[[~[[*teampageid]]]]#block[[+MIGX_id]]"><img src="[[+team-img:phpthumbon=`w=170&h=180&zc=1&q=90`]]" /></a> </div> <div class="push15"></div> <div class="title f15 bold white"> <a href="[[~[[*teampageid]]]]#block[[+MIGX_id]]">[[+team-name]]</a> </div> <div class="text f13">[[+team-post]]</div> </div> </div>
Комментарии ()