模板教程:Typecho 模板制作之修改分页(pageNav)显示样式

模板开发以及发布测试

版主: seita

回复
半个书生
帖子: 29
注册时间: 2009年 1月 5日 07:42
联系:

模板教程:Typecho 模板制作之修改分页(pageNav)显示样式

帖子 半个书生 »

还是搞个可视化编辑器比较方便吧,粘贴下就好了:
完整版看这:http://lampstudy.net/topic/219-Typecho-templates-to-create-the-modified-pageNav-Show-Style.html
Typecho模板的默认分页显示数量不是太合理,打算想修改下,发现后台没有设置,就看了pageNav的源码,发现$this->pageNav是可以带参数的,先看下Typecho分页函数的源码:

/**
* 输出分页
*
* @access public
* @param string $prev 上一页文字
* @param string $next 下一页文字
* @param int $splitPage 分割范围
* @param string $splitWord 分割字符
* @return void
*/
public function pageNav($prev = '«', $next = '»', $splitPage = 3, $splitWord = '...')
{
$hasNav = false;
$this->pluginHandle()->trigger($hasNav)->pageNav($prev, $next, $splitPage, $splitWord);

if (!$hasNav) {
$query = Typecho_Router::url($this->parameter->type .
(false === strpos($this->parameter->type, '_page') ? '_page' : NULL),
$this->_pageRow, $this->options->index);

/** 使用盒状分页 */
$nav = new Typecho_Widget_Helper_PageNavigator_Box(false === $this->_total ? $this->_total = $this->size($this->_countSql) : $this->_total,
$this->_currentPage, $this->parameter->pageSize, $query);
$nav->render($prev, $next, $splitPage, $splitWord);
}
}

这个默认的显示样式是这样的:

这里默认显示的4页;

这里显示的是7页;

我想要的效果是,首页默认就显示5页,那么我改如何做呢?看到上面的函数了没?只需要给$this->pageNav();添上四个参数就可以实现了。
下面是代码及效果:

pageNav('上一页','下一页',5,'...');?>

效果:

$this->pageNav(); 的前两个参数是上下页显示的样式,这里你可以输入你想要的样式html代码;第三个参数就是我需要的首页显示的数量了,这的5是分割数量也就是你点击了一个分页之后,这个分页前后显示的分页数量;第四个参数是分割字符,这里可以输入你想要的样式的html代码。

这个是加上了html代码后的效果:

好了。如果你需要个性化的效果,那么不妨在这第1、2、4参数里面写上你需要的html代码,当然你也可以用css来实现个性化的效果,不过还是在这个参数里面写html代码更为方便和实用。

题外:
这个虽然方便,但是会不会带来一些安全性的问题呢,比如在这写上JavaScript代码,那又会是怎样的效果呢?
经过测试发现,这里可以写入JavaScript代码,所以请注意了,在网上下的模板要注意检查下哦!
头像
joyqi
帖子: 422
注册时间: 2007年 7月 24日 19:43
联系:

Re: 模板教程:Typecho 模板制作之修改分页(pageNav)显示样式

帖子 joyqi »

很好的教程,楼主辛苦了
回复