SP 长分页数字控制

//放在入口文件,调用,include 'fy.php';
spAddViewFunction('pager', '__template_pager');

function __template_pager($params) {
	if (!isset($params['pager']) || empty($params['pager']))
		return '';
	$args = array();
	foreach ($params as $k => $v)
		if (!in_array($k, array('c', 'a', 'pager', 'myclass', 'mypage', 'offset')))
		$args[$k] = $v;
	$pagerhandle = isset($params['pager']['mypage']) ? $params['pager']['mypage'] : 'page';
	$html = "<div class=\"{$params['myclass']}\">";
	if ($params['pager']['current_page'] != $params['pager']['first_page']) {
		$url = spUrl($params['c'], $params['a'], $args + array($pagerhandle => $params['pager']['prev_page']));
		$html .= "<a href=\"{$url}\">< Prev</a>";
	} else {
		$html .= "<span class=\"disabled\">< Prev</span>";
	}
	$offset = $params['offset'] ? $params['offset'] : 200; // 可以在<{pager}>内用offset=x来调整

	foreach ($params['pager']['all_pages'] as $page) {
		if ($page == $params['pager']['current_page']) {
			$html .= "<span class=\"current\">{$page}</span>";
		} else {
			if (($params['pager']['current_page'] < $offset && $page < $offset ) ||
					($params['pager']['current_page'] > $params['pager']['last_page'] - $offset && $page > $params['pager']['last_page'] - $offset ) ||
					( $page < $params['pager']['current_page'] + $offset && $page > $params['pager']['current_page'] - $offset )
			) {
				$url = spUrl($params['c'], $params['a'], $args + array($pagerhandle => $page));
				$html .= "<a href=\"$url\">{$page}</a>";
			}
		}
	}
	if ($params['pager']['current_page'] != $params['pager']['last_page']) {
		$url = spUrl($params['c'], $params['a'], $args + array($pagerhandle => $params['pager']['next_page']));
		$html .= "<a href=\"$url\">Next ></a>";
	} else {
		$html .= "<span class=\"disabled\">Next ></span>";
	}
	$html .= '</div>';
	return $html;
}


模板里面调用:


<{foreach from=$results item=one}>


中间略


 <{/foreach}>


显示分页数字

<{pager pager=$pager myclass="num" c="news" a="newslist"  offset=5}>

posted @ 2012-12-27 10:27  网络剑客  阅读(176)  评论(0)    收藏  举报