В общем, было найдено решение, но как оказалось оно для EVO =(

В итоге взяла его за основу и переписала.
Итак процесс установки:
1) создаем namespace table
2) создаем плагин «TvTable» с событиями OnTVInputRenderList, OnTVInputPropertiesList и OnDocFormPrerender
<?php
$corePath = $modx->getOption('table.core_path', null, $modx->getOption('core_path') . 'components/table/');
switch ($modx->event->name) {
case 'OnTVInputRenderList':
$modx->event->output($corePath . 'elements/tv/input/');
break;
case 'OnTVInputPropertiesList':
$modx->event->output($corePath . 'elements/tv/inputoptions/');
break;
case 'OnDocFormPrerender':
$modx->regClientStartupScript('//code.jquery.com/jquery-1.11.2.min.js');
break;
}3) распаковываем в core/components архив 4) теперь создаем TV-параметр с типом table и пользуемся)
5) сниппет tvTable для вывода простой таблицы [[!tvTable?&tv=`id TV`&id=`id ресурса`]]
<?php
if (!isset($tv)){
return;
}
$tv = (int)$tv;
$classname = isset($classname) ? $classname : 'pricelist';
$did =isset($id) ? $id : $modx->resource->id;
if ($tvObject = $modx->getObject('modTemplateVarResource', array('tmplvarid' => $tv, 'contentid' => $did ))){
$tvv = $tvObject->get('value');
}
if (!$tvv || $tvv=='[["",""],["",""]]') return;
$tvtArr=json_decode($tvv);
$output='<table class="'.$classname.'">'."\n";
$output .='<tr>'."\n";
for($i=0; $i<count($tvtArr[0]); $i++) $output .='<th'.($i ? '' : ' class="first"').'>'.$tvtArr[0][$i].'</th>'."\n";
$output.='</tr>'."\n";
for($row=1; $row<count($tvtArr); $row++) {
$output .='<tr'.(($row%2) ? '' : ' class="altrow"').'>'."\n";
for($i=0; $i<count($tvtArr[$row]); $i++) $output .='<td'.($i ? '' : ' class="first"').'>'.$tvtArr[$row][$i].'</td>'."\n";
$output.='</tr>'."\n";
}
$output.='</table>';
return $output;Источник: https://modx.pro/solutions/4944-tvtable-table/
Объектная
2 комментария