'', // результат для вывода - работает автоматом # задаваемые опции 'text' => '', // текст 'func' => '', // функция ячейки 'file' => '', // файл ячейки 'id' => '', // id ячейки 'class' => '', // класс ячейки 'attr' => '', // атрибуты ячейки, например style 'colspan' => '', // количество столбцов которое занимает ячейка (только для таблиц) 'rowspan' => '', // количество строк которое занимает ячейка (только для таблиц) ); } } // pr($GRID[$name]); } # заполняем ячейки function grid_r_c($name = '', $row = 1, $col = 1, $options = array()) { global $GRID; # имя сетки if (!$name) return; # функция, текст $func = (isset($options['func'])) ? $func = $options['func'] : $func = false; $text = (isset($options['text'])) ? $text = $options['text'] : $text = false; $file = (isset($options['file'])) ? $file = $options['file'] : $file = false; # прочие опции $id = (isset($options['id'])) ? $id = $options['id'] : $id = ''; $class = (isset($options['class'])) ? $class = $options['class'] : $class = ''; $attr = (isset($options['attr'])) ? $attr = $options['attr'] : $attr = ''; $colspan = (isset($options['colspan'])) ? $colspan = $options['colspan'] : $colspan = ''; $rowspan = (isset($options['rowspan'])) ? $rowspan = $options['rowspan'] : $rowspan = ''; if (isset($GRID[$name][$row][$col])) { // заполняем массив ячейки опциями $GRID[$name][$row][$col]['func'] = $func; $GRID[$name][$row][$col]['text'] = $text; $GRID[$name][$row][$col]['file'] = $file; $GRID[$name][$row][$col]['id'] = $id; $GRID[$name][$row][$col]['class'] = $class; $GRID[$name][$row][$col]['attr'] = $attr; $GRID[$name][$row][$col]['colspan'] = $colspan; $GRID[$name][$row][$col]['rowspan'] = $rowspan; # предопределенная функция, которая буферизует вывод type-файла if ($func == 'ob_start') { ob_start(); return; } # предопределенная функция, которая выводит буфер type-файла if ($func == 'ob_end') { $GRID[$name][$row][$col]['out'] = ob_get_contents(); ob_end_clean(); return; } # предопределенная функция, которая очищает буфер, если не нужно выводить # результат. Использовать вместо ob_end if ($func == 'ob_clean') { ob_end_clean(); return; } # если определена константа, то в out ничего не пишем if (defined('GRID_ONLY')) return; # помещаем в ячейку указанный текст if ($text) { $GRID[$name][$row][$col]['out'] = $text; return; } # указана функция if ($func and function_exists($func)) { ob_start(); $func(); $GRID[$name][$row][$col]['out'] = ob_get_contents(); ob_end_clean(); return; } # указан файл if ($file) { $path = getinfo('template_dir') . $file; if ( file_exists($path) and !is_dir($path)) { ob_start(); require($path); $GRID[$name][$row][$col]['out'] = ob_get_contents(); ob_end_clean(); return; } } } } # вывод function grid_end($name = '') { global $GRID; if (!$name) return; if (isset($GRID[$name])) { if ( count($GRID[$name]) == 1 and count($GRID[$name][1]) == 1 ) // если задана одна ячейка, { _grid_div($name); // одиночный div } elseif ( count($GRID[$name][1]) == 1 ) // только один столбец { _grid_divs($name); // вложенный див } else { _grid_table($name); // таблица } } } # одиночный div function _grid_div($name) { global $GRID; $id = ($GRID[$name][1][1]['id']) ? $id = $GRID[$name][1][1]['id'] : $id = $name; $class = ($GRID[$name][1][1]['class']) ? $class = ' class="' . $GRID[$name][1][1]['class'] . '"' : $class = ''; $attr = ($GRID[$name][1][1]['attr']) ? $attr = ' '. $GRID[$name][1][1]['attr'] : $attr = ''; echo NR . '
' . $td_val['out'] . ' | ' . NR; } } echo '