Наверх

TvTable - таблица

В разделе «Репосты» расположены чужие статьи, которые мне понравились или показались полезными.

Добрый день! Понадобилась мне тут табличка в виде Тв-параметра, в которой можно менять не только кол-во строк, но и столбцов. Поэтому migx не подходит (

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

  1. Антон 16 мая 2016, 08:05 # 0
    А можно ли это решение применить при создании ресурсов с фронтенда как доп поле?
    1. Илья Уткин 21 мая 2016, 13:36 # 0
      Не знаю… Наверное, можно, но лучше поискать готовое решение для таблиц… Какой-нибудь jQuery-плагин

    Авторизация

    через сервис Loginza:


    Шаблоны MODX

    1 2 Дальше »

    Объектная
    модель
    MODX