protected static function do_render_in($_view_dir, $_pps_type, target $_target) { foreach ($_target->get_param('link', []) as $_linked_name) { $_file = $_pps_type . '/' . $_linked_name . '.' . $_pps_type; $_pps_file = $_view_dir . '/' . $_file; if (is_readable($_pps_file)) { if (kernel::is_debug()) { echo "\n/******** {$_file} ********/\n\n"; } require $_pps_file; } } $_layout_name = $_target->get_param('layout', ''); if ($_layout_name !== '') { $_file = 'layout/' . $_layout_name . '.' . $_pps_type; $_pps_file = $_view_dir . '/' . $_file; if (is_readable($_pps_file)) { if (kernel::is_debug()) { echo "\n/******** {$_file} ********/\n\n"; } require $_pps_file; } } foreach ($_target->get_param('block', []) as $_block_name) { $_file = 'block/' . $_block_name . '.' . $_pps_type; $_pps_file = $_view_dir . '/' . $_file; if (is_readable($_pps_file)) { if (kernel::is_debug()) { echo "\n/******** {$_file} ********/\n\n"; } require $_pps_file; } } if ($_target->get_target_name() !== '') { $_file = 'page/' . $_target->get_target_file('.' . $_pps_type); $_pps_file = $_view_dir . '/' . $_file; if (is_readable($_pps_file)) { if (kernel::is_debug()) { echo "\n/******** {$_file} ********/\n\n"; } require $_pps_file; } } }
/** * 把 page tpl 的渲染结果当做 http 响应内容体发出去,不包含 skeleton。 * * self::send_page(); // * self::send_page('page_name'); // * self::send_page('page_name', $with_pps = true); // */ public static function send_page() { $func_args = func_get_args(); $num_args = func_num_args(); $with_pps = parent::$skeleton !== false; if ($num_args === 0) { $target_name = self::get_target_name_from_page_name(); } else { if ($num_args === 1) { if (is_bool($func_args[0])) { $target_name = self::get_target_name_from_page_name(); $with_pps = $func_args[0]; } else { $target_name = self::get_target_name_from_page_name($func_args[0]); } } else { if (is_bool($func_args[1])) { $target_name = self::get_target_name_from_page_name($func_args[0]); $with_pps = $func_args[1]; } else { throw new developer_error('bad call to send_page'); } } } $target = new target($target_name); $html = self::render_tpl('page/' . $target->get_target_file() . '.tpl', context::get_escaped(), false); if (parent::$skeleton !== false && $with_pps) { ob_start(); parent::echo_css_link(router::pps_url('pss.php?page=' . $target->get_target_name(), false)); echo $html; parent::echo_js_link(router::pps_url('pjs.php?page=' . $target->get_target_name(), false)); self::send(ob_get_clean()); } else { self::send($html); } }