Как вывести API через чанк?
Всем привет. Столкнулся с проблемой при получения данных из API, данные выводятся через foreach(). Через var_dump() выводится всё как надо, но вот пытаюсь выводить это дело через $modx->getChunk() и у меня выводит только последний пункт из выборки. Вот код сниппета:
а это код чанка:
<?php
$tpl = $modx->getOption('tpl', $scriptProperties, 'tpl.PayPanel.rowTpl');
$plan = $modx->getOption('plan', $scriptProperties, 'vhost');
$host = $modx->getOption('paypanel_billmanager_url');
$format = $modx->getOption('paypanel_billmanager_format');
$login = $modx->getOption('paypanel_billmanager_login');
$password = $modx->getOption('paypanel_billmanager_password');
$url.= $host;
$url.= 'billmgr?out='.$format;
$url.= '&func=auth';
$url.= '&username='.$login;
$url.= '&password='.$password;
$json = file_get_contents($url);
$auth = json_decode($json);
$auth = (array)$auth->doc->auth;
$auth = $auth['$id'];
$api_url.= $host;
$api_url.= 'billmgr?auth='.$auth;
$api_url.= '&out='.$format;
$api_url.= '&func=pricelist.export';
$api_json = file_get_contents($api_url);
$api = json_decode($api_json);
$api = (array)$api->doc->pricelist;
foreach($api as $k => $v) {
$group = (array)$v->itemtype_info->intname;
$group = $group['$'];
if($group == $plan) {
$name = (array)$v->name;
$name = $name['$'];
$description = (array)$v->description_ru;
$description = $description['$'];
$addon = $v->addon;
$price = (array)$v->price;
unset($price['$currency']);
foreach($price as $period => $p) {
$p1 = (array)$p['0'];
$cost1 = $p1['$cost'];
$type1 = $p1['$type'];
$length1 = $p1['$length'];
$orderlink1 = $p1['$orderlink'];
$p2 = (array)$p['1'];
$cost2 = $p2['$cost'];
$type2 = $p2['$type'];
$length2 = $p2['$length'];
$orderlink2 = $p2['$orderlink'];
$p3 = (array)$p['2'];
$cost3 = $p3['$cost'];
$type3 = $p3['$type'];
$length3 = $p3['$length'];
$orderlink3 = $p3['$orderlink'];
$p4 = (array)$p['3'];
$cost4 = $p4['$cost'];
$type4 = $p4['$type'];
$length4 = $p4['$length'];
$orderlink4 = $p4['$orderlink'];
$modx->setPlaceholder('name', $name);
$modx->setPlaceholder('description', $description);
$modx->setPlaceholder('cost1', $cost1);
$modx->setPlaceholder('type1', $type1);
$modx->setPlaceholder('length1', $length1);
$modx->setPlaceholder('orderlink1', $orderlink1);
$modx->setPlaceholder('cost2', $cost2);
$modx->setPlaceholder('type2', $type2);
$modx->setPlaceholder('length2', $length2);
$modx->setPlaceholder('orderlink2', $orderlink2);
$modx->setPlaceholder('cost3', $cost3);
$modx->setPlaceholder('type3', $type3);
$modx->setPlaceholder('length3', $length3);
$modx->setPlaceholder('orderlink3', $orderlink3);
$modx->setPlaceholder('cost4', $cost4);
$modx->setPlaceholder('type4', $type4);
$modx->setPlaceholder('length4', $length4);
$modx->setPlaceholder('orderlink4', $orderlink4);
$output = $modx->getChunk($tpl);
}
}
}
return $output;
а это код чанка:
<div class="col-md-4">
<div class="plan">
<h3>[[+name]]</h3>
<p>[[+description]]</p>
<div class="row">
<div class="col-md-4">
от [[+cost1]] EUR
</div>
<div class="col-md-4">
[[+length1]] мес.
</div>
<div class="col-md-4">
<a href="[[+linkorder1]]" class="btn btn-primary">Заказать</a>
</div>
</div>
<div class="row">
<div class="col-md-4">
от [[+cost2]] EUR
</div>
<div class="col-md-4">
[[+length2]] мес.
</div>
<div class="col-md-4">
<a href="[[+linkorder2]]" class="btn btn-primary">Заказать</a>
</div>
</div>
<div class="row">
<div class="col-md-4">
от [[+cost3]] EUR
</div>
<div class="col-md-4">
[[+length3]] мес.
</div>
<div class="col-md-4">
<a href="[[+linkorder3]]" class="btn btn-primary">Заказать</a>
</div>
</div>
<div class="row">
<div class="col-md-4">
от [[+cost4]] EUR
</div>
<div class="col-md-4">
[[+length4]] мес.
</div>
<div class="col-md-4">
<a href="[[+linkorder4]]" class="btn btn-primary">Заказать</a>
</div>
</div>
</div>
</div>
Подскажите в чём может быть проблема? Я уже пару часов бьюсь не могу понять почему выводит только последний результат из выборки((( Комментарии: 2
Попробуй так:
Нужно, чтобы в переменную данные дописывались. А у тебя она постоянно перезаписывается.
$output .= $modx->getChunk($tpl);
Нужно, чтобы в переменную данные дописывались. А у тебя она постоянно перезаписывается.
Огромное спасибо. Всё стало выводится)
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.