以前有发布过一篇日志,采用PageArvhives来对博客的首页或者按分类和按月归档进行分页,PageArvhives会生成静态页面,虽然访问的时候对服务器的要求不高,但是当某个分类下文章多了的时候,发布一篇日志就要生成很多的文件,生成这些文件要等很久。除外,还有一款叫Pagination的插件,我在Windows上装没有成功,因为它使用.htaccess重写了URL。今天在Byrne Reese博客里面看到一种更方便的分页办法,不需要安装任何插件,只要修改一下代码的就好。
在修改代码前要注意备份,先把默认的代码复制下来,以免等下修改不成功,下面我提供的代码可能和您们有差别,因为我的博客是从MT4.0升级上来的,所以一些代码可能和最新版的是不一样的。
更要注意的是,这个是采用PHP实现的,所以确保你的主机支持PHP,如果你采用的是html后缀的话,要让你的主机使用PHP来处理html页面。并且,代码的修改可能会导致Server Side Include或Module Caching工作不正常。
如果想使用分页,用下面的代码替换你相应的代码即可,并修改一下CSS文件。
首页代码
<$mt:Var name="page_layout" value="layout-wm"$>
<mt:SetVarBlock name="title"><$mt:BlogName encode_html="1"$></mt:SetVarBlock>
<mt:Unless name="datebased_archive"><$mt:Var name="limit" value="auto"$></mt:Unless>
<$mt:Include module="Header" body_class="mt-main-index"$>
<mt:var name="currentp" value="0">
<mt:var name="limit" value="10">
<mt:var name="lastn" value="3000"><?php
$page = $_REQUEST['p'];
if (!isset($page)) { $page = 1; }
?>
<mt:Entries lastn="$lastn">
<mt:setvarblock name="page"><mt:getvar name="__counter__" op="mod" value="$limit"></mt:setvarblock>
<mt:if name="page" eq="1">
<mt:setvar name="currentp" op="add" value="1">
<mt:if name="currentp" gt="1"><?php } ?></mt:if>
<?php if ($page == <$mt:var name="currentp"$>) { ?>
</mt:if>
<$mt:include module="Entry Summary"$>
<mt:if name="__last__"><?php } ?></mt:if>
</mt:Entries>
<div id="content-nav">
<?php
$limit = <mt:var name="limit">;
$page_count = <mt:var name="currentp">;
if ($page < $page_count) {
echo '<div class="pagination_left"><a id="next-page" href="?p='.($page + 1).'">« Older Posts</a></div>';
}
if ($page > 1) {
echo '<div class="pagination_right"><a id="prev-page" href="?p='.($page - 1).'">Newer Posts »</a></div>';
}
?>
</div>
归档(按月和按分类归档)页面代码
<$mt:Var name="page_layout" value="layout-wm"$>
<mt:SetVarBlock name="page_title"><$mt:ArchiveTitle$></mt:SetVarBlock>
<mt:SetVarBlock name="title"><$mt:Var name="page_title"$> - <$mt:BlogName encode_html="1"$></mt:SetVarBlock>
<mt:Unless name="datebased_archive"><$mt:Var name="limit" value="auto"$></mt:Unless>
<mt:If name="datebased_archive">
<mt:SetVarBlock name="html_head">
<mt:ArchivePrevious><link rel="prev" href="<$mt:ArchiveLink$>" title="<$mt:ArchiveTitle encode_html="1"$>" /></mt:ArchivePrevious>
<mt:ArchiveNext><link rel="next" href="<$mt:ArchiveLink$>" title="<$mt:ArchiveTitle encode_html="1"$>" /></mt:ArchiveNext>
</mt:SetVarBlock>
</mt:If>
<mt:SetVarBlock name="body_class">mt-archive-listing mt-<$mt:Var name="archive_class"$></mt:SetVarBlock>
<$mt:Include module="Header" body_class="$body_class"$>
<mt:var name="currentp" value="0">
<mt:var name="limit" value="10">
<mt:var name="lastn" value="3000"><?php
$page = $_REQUEST['p'];
if (!isset($page)) { $page = 1; }
?>
<h1 id="page-title" class="archive-title">
<mt:Unless name="datebased_archive">
<mt:IfArchiveType archive_type="Category">
Recently in <em><$mt:ArchiveTitle$></em> Category
</mt:IfArchiveType>
<mt:IfArchiveType archive_type="Author">
Recently by <em><$mt:ArchiveTitle$></em>
</mt:IfArchiveType>
<mt:Else>
<$mt:Var name="page_title"$>
</mt:Unless>
</h1>
<mt:Entries>
<mt:setvarblock name="page"><mt:getvar name="__counter__" op="mod" value="$limit"></mt:setvarblock>
<mt:if name="page" eq="1">
<mt:setvar name="currentp" op="add" value="1">
<mt:if name="currentp" gt="1"><?php } ?></mt:if>
<?php if ($page == <$mt:var name="currentp"$>) { ?>
</mt:if>
<$mt:include module="Entry Summary"$>
<mt:if name="__last__"><?php } ?></mt:if>
</mt:Entries>
<div id="paginaton">
<?php
$limit = <mt:var name="limit">;
$page_count = <mt:var name="currentp">;
if ($page < $page_count) {
echo '<div class="pagination_left"><a id="next-page" href="?p='.($page + 1).'">« Older Posts</a></div>';
}
if ($page > 1) {
echo '<div class="pagination_right"><a id="prev-page" href="?p='.($page - 1).'">Newer Posts »</a></div>';
}
?>
</div>
<div class="content-nav">
<mt:ArchivePrevious>
<a href="<$mt:ArchiveLink$>">« <$mt:ArchiveTitle$></a> |
</mt:ArchivePrevious>
<a href="<$mt:Link template="main_index"$>">Main Index</a> |
<a href="<$mt:Link template="archive_index"$>">Archives</a>
<mt:ArchiveNext>
| <a href="<$mt:ArchiveLink$>"><$mt:ArchiveTitle$> »</a>
</mt:ArchiveNext>
</div>
<$mt:Include module="Footer"$>
CSS文件
#pagination {
}
.pagination_left {
float:left;
}
.pagination_right {
float:right;
}
修改完重建一下响应的页面就OK,如果我提供的代码不行的话,可以去Byrne Reese那去查看原始版本,然后自己修改。注意,在修改代码之前最好要备份一下,以免修改不成功。
我的System Email设置了邮箱yo2@qq.com了啊,你收到的垃圾邮件不是这个地址吗?还有你今天的评论我没收到,以前的都在垃圾邮件里了。