В общем, было найдено решение, но как оказалось оно для 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 комментария