Парсинг Google таблиц
Прошу помощи по снипету. Сделал вот такой костыль:
<?php
$idx = $modx->getObject('modTemplateVar', array('name' => 'idtab'))->getValue($modx->resource->get('id'));
$gid = $modx->getObject('modTemplateVar', array('name' => 'gid'))->getValue($modx->resource->get('id'));
$range = $modx->getObject('modTemplateVar', array('name' => 'range'))->getValue($modx->resource->get('id'));
$csv = file_get_contents('https://docs.google.com/spreadsheets/d/'.$idx.'/export?format=csv&gid='.$gid.'&range='.$range);
$csv = explode("\r\n", $csv);
$array = array_map('str_getcsv',$csv);
$htm .= '<table class="table table-striped"><tbody>';
$i=0;
unset($array[0]);
if (is_array($array) || is_object($array))
{ foreach ($array as $arr){
$i++;
$htm .= '<tr>';
$htm .= '<td scope="row">'.$i.'</td>';
foreach ($arr as $td) {
$htm .= '<td scope="row">'. $td .'</td>';
}
$htm .= '</tr>';
}
$htm .= '</tbody></table>';
}
echo $htm;
Он работает и все устраивает. И все бы хорошо но мне нужно вызвать его на странице несколько раз. Подставить значение idtab, gid, range из нескольких ресурсов, т.е. на одном ресурсе вывести несколько листов google таблицы. И тут мои «познания» закончились. Попробовал сделать так:[[pdoResources?
&parents=`0`
&resources=`6,331,458,459,460`
&tpl=`isp`
&limit=`30`
]]
где чанк isp имеет содержимое:<hr>
<h1>[[+pagetitle]]</h1>
[[Google-Shits?]]
<hr>
Но он подтягивает одну таблицу 5 раз. Как это исправить? Комментарии: 3
Как это исправить?Сделать idtab, gid, range параметрами сниппета. Тогда сниппет будет вызываться так
[[!Google-Shits?
&idtab=`value`
&gid=`value`
&range=`value`
]]
Ну а сами параметры, я бы запихнул в migx.Вместо этого нужно оставить только параметры.
$idx = $modx->getObject('modTemplateVar', array('name' => 'idtab'))->getValue($modx->resource->get('id'));
$gid = $modx->getObject('modTemplateVar', array('name' => 'gid'))->getValue($modx->resource->get('id'));
$range = $modx->getObject('modTemplateVar', array('name' => 'range'))->getValue($modx->resource->get('id'));
Спасибо за ответ. Я не хотел использовать migx, но где моя ошибка понял
Можно под каждую таблицу создать отдельное ТВ или по три ТВ, но по-моему лучше обойтись одним MIGX.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.