MT分页

| 3 Comments | Previous | Next | EDIT
      以前有发布过一篇日志,采用PageArvhives来对博客的首页或者按分类和按月归档进行分页,PageArvhives会生成静态页面,虽然访问的时候对服务器的要求不高,但是当某个分类下文章多了的时候,发布一篇日志就要生成很多的文件,生成这些文件要等很久。除外,还有一款叫Pagination的插件,我在Windows上装没有成功,因为它使用.htaccess重写了URL。今天在Byrne Reese博客里面看到一种更方便的分页办法,不需要安装任何插件,只要修改一下代码的就好。
      在修改代码前要注意备份,先把默认的代码复制下来,以免等下修改不成功,下面我提供的代码可能和您们有差别,因为我的博客是从MT4.0升级上来的,所以一些代码可能和最新版的是不一样的。
      更要注意的是,这个是采用PHP实现的,所以确保你的主机支持PHP,如果你采用的是html后缀的话,要让你的主机使用PHP来处理html页面。并且,代码的修改可能会导致Server Side IncludeModule 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).'">&laquo; Older Posts</a></div>';
}
if ($page > 1) {
  echo '<div class="pagination_right"><a id="prev-page" href="?p='.($page - 1).'">Newer Posts &raquo;</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).'">&laquo; Older Posts</a></div>';
}
if ($page > 1) {
  echo '<div class="pagination_right"><a id="prev-page" href="?p='.($page - 1).'">Newer Posts &raquo;</a></div>';
}
?>
</div>


<div class="content-nav">
    <mt:ArchivePrevious>
    <a href="<$mt:ArchiveLink$>">&laquo; <$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$> &raquo;</a>
    </mt:ArchiveNext>
</div>

<$mt:Include module="Footer"$>
      CSS文件
#pagination {
}

.pagination_left {
    float:left;
}

.pagination_right {
    float:right;
}
      修改完重建一下响应的页面就OK,如果我提供的代码不行的话,可以去Byrne Reese那去查看原始版本,然后自己修改。注意,在修改代码之前最好要备份一下,以免修改不成功。

3 Comments

我的System Email设置了邮箱yo2@qq.com了啊,你收到的垃圾邮件不是这个地址吗?还有你今天的评论我没收到,以前的都在垃圾邮件里了。
我在垃圾邮件里面找到了你MT发的。 我收到的邮件是从yo2@qq.com发的。
真是獲益良多 最近剛更新成MT4.25 又剛好想找分頁的Plugin 之前是看上PageArvhives 看到板主寫的這篇後,決定用新的方法了 感謝分享^^

评论

推荐主机

Bluhost空间租用        MediaTemple空间租用

Recent Entries

MT 5.1发布, 5.05 和 4.36更新
刚刚看到MT.org的文章,MT5.1发布了。 怎么冒出了一个MT5.05版本,我发现我测试的那个还是使用MT5.01的,如果你不想升级到5.1的话,5.01可以升级到5.05吗?我是这样理解的。 MT5.05和MT4.36是安全更新,强烈建议大家更新。 下面界面MT5的官方PPT,里面介绍了MT5.1的一些新功能。拖拉来管理分类这个功能不错,虽然我们不常去改变,如果一个博客下有很多的分类,用这种方法就方便多了,除外,MT5.1也新增了一些MTML标签。…
MT 5.1 Beta 1发布
MT 5.1 Beta 1 今天发布了,在接下来的三个月左右时间里,SAKK会每隔两个星期左右发布一个Beta版本,等程序稳定了,就发布RC版本,第一个RC版本大概在五月中旬发布。 下载MT 5.1 Beta 1 Beta Builds MTOS nightly builds Source Code 更多信息请查看MT.org的日志。…
6A日本公司被Infocom收购
刚刚从6A的官方网站上看到,Six Apart KK(SAY日本子公司)被Infocom收购了。收购之后,全球的Movable Type(MT)的业务就交给SAKK管理了,并且运营Six Apart这个品牌。 在的收购公示里,粗略谈到了Movable Type以后的一些发展,比如更好地整合Twitter等社会化应用。希望SAKK被Infocom收购之后,能够更好地完善Movable Type。公示的英文简版请看:Six Apart Japan to be acquired by Infocom and assume responsibility for Movable…