Skip to content

免插件生成文章存档页面[飞速版]——2011-09-16更新

2010 七月 10
by 荒野无灯


2011-09-16 updated:
增加缓存控制,在首次访问时生成缓存并保存在数据库中,不用每次访问都要查询M遍数据库并经过N次for循环最终生成归档。
效率和速度对比:
之前的版本
可看到内存使用峰值为38.25 MiB,SQL查询次数为1463次,PHP执行耗时2.560秒

优化后的版本
可看到内存使用峰值为28.29 MiB,SQL查询次数为83次,PHP执行耗时0.404秒

二者的数据一对比你就知道啦 :twisted:

PS:目前这个页面模板是我用过的greenthewebnews主题的,如用在你当前的主题不好看,你只需对比你的主题的page.php文件做少量修改即可。


以下内容于 2010年07月10日 发布:



话说那天在此童鞋的博客留言本上看到有人问及他的“网站地图”功能是怎么实现D,偶看到此童鞋笑而不答。这引起了偶的注意,淫荡地笑了下,发现问题啦(底部的JS代码露出了马脚( :mrgreen: 淫笑中) ),于是有了此文。

http://wange.im/sitemap
其实万童鞋这个网站地图 并不是地图啦,只是一个文章存档而已。今天我也弄了个差不多的东东,我就老实多啦,取名”存档“。呵呵。大家喜欢的把代码拿去吧。
看下我这里的效果:http://www.ihacklog.com/sitearchives

如果你的博客没有加载JQuery 库,请自行添加代码搞定。(这个不用说了吧?)

说明:

此代码部分参考了Viper007Bond童鞋的插件Clean Archives Reloade 。不过我这个应该运行时效率稍高一些,主要是对其GetPosts()这个函数做了相应的修改。在此感谢Viper007Bond童鞋一下。

此方法与插件法相比的优点:
1,纯绿色,不写入任何东东到数据库
2,按需调用。无需全站加载,只在访问存档页时调用。
3,与插件一样,可配置。(配置方法见下面)

使用方法,将hacklog-clean-archives.php上传至当前主题目录下面,然后在后台新建一页面,名字随意,模板选择 hacklog-clean-archives ,内容可写可不写。
页面内容如果要写,则必须按以下格式,因为这里页面内容实际上是用来控制这个存档的显示的。

1
2
3
4
5
usejs=1;
monthorder=old;
postorder=old;
postcount=1;
commentcount=1;

解释下,这里usejs表示使用JQ折叠显示 ,这个Javascript存档折叠显示效果相当酷的。 :mrgreen: 为1开启,设为0关闭。
monthorder (存档月份排序) :
new 【按时间倒叙排列月份(离现在最近的月份排最前)】
old 【按时间正序排列月份(离现在最远的月份排最前)】
postorder (存档文章排序):
new 【将最新的日志显示在第一位】
old 【将最旧的日志显示在第一位】
postcount:是否显示每月的文章数
0 :不显示
1 :显示
commentcount :是否显示文章评论数
0 :不显示
1 :显示

喜欢这篇文章吗?

请订阅本站 RSS feed填写您的邮件地址,订阅我们的精彩内容:,欢迎点击这里捐赠以支持荒野无灯转播到腾讯微博 转播到腾讯微博

作者:荒野无灯
出处:Hacklog【Hacklog】

声明: 本站遵循 署名-非商业性使用-相同方式共享 3.0 共享协议. 转载请注明转自Hacklog【荒野无灯weblog】

本文链接: http://ihacklog.com/?p=3982

46 Responses Post a comment
  1. 九月 22, 2011

    额,看着真神奇

  2. 九月 16, 2011

    现在用的还是插件
    今晚上完课回来看看就把这个折腾上
    8)

  3. 四月 5, 2011

    额 本地使用了一下 和我的主题 兼容不好.使用此模板后 全站 错位.头部没有.底部也没有侧栏跑到了最边上 看来要把代码复制到我用的模板里面才行.麻烦告知哪些是关键代码.content那部分我知道 其他的代码是干嘛的就不知道了.wp新手很多不懂的.请指教 :razz: 我现在用到是原版的clean archive reload插件

    • 四月 5, 2011

      主要是把下面修改成自己模板的格式:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      <!-- BEGIN content -->
      <div id="content">
      <style type="text/css">.car-collapse .car-yearmonth { cursor: s-resize; } .car-container{ width:666 px; } </style>
         
          <!-- begin post -->
          <div class="single">
              <h2>文章存档</h2>
              <p class="date">目前共有文章:  <?php echo $hacklog_archives->PostCount();?>篇  </p>
          <!-- Hacklog Clean Archives By 荒野无灯 @ www.ihacklog.com -->
          <?php echo $hacklog_archives->PostList();?>
             
          </div>
          <!-- end post -->

      </div>
      <!-- END content -->
      • 四月 5, 2011

        感谢啦 回去试试 刚刚解决了一个页面模板的小问题.加上这个应该不难

      • 四月 5, 2011

        还是不行呢 没有js效果 加载JQuery 库之后还是没有折叠效果啊.
        您说的那个 页面内容写那些usejs=1;
        monthorder=old;
        postorder=old;
        postcount=1;
        commentcount=1;
        应该没有用.
        我是把<?php
        function callback和两个函数复制到自己的模板里面 然后在head加载库.然后模板中添加 PostList();? >这个函数. 这样应该对吧

        • 四月 5, 2011

          按错了 按到回复上去了.我把< ?php function callback 还有< ? php class hacklog_archives 那一整个函数复制到我的模板里面. 然后在head加载库,再在模板里面添加 :?: PostList(); ? >函数.这样应该没错吧?出来列表了,但是没有折叠效果.请问该怎么办?

          • 四月 5, 2011

            以你下载的文件为基础修改。这个要修改的地方不多,顶多是几个class几个div罢了。还有,不要用windows记事本。

  4. 三月 20, 2011

    试试看,又可以去掉一个插件了。 :mrgreen:

  5. 二月 9, 2011

    您好,请问,为什么我没有JS折叠 效果呢?明明加载了 Jquery库。
    http://ihacklog.com/external_link_redirect/aHR0cDovL2JyZWFrYXdheS5tZS9hcmNoaXZlcy5odG1s
    谢谢!

  6. 二月 8, 2011

    谢谢灯大师的代码

  7. 十一月 1, 2010

    楼主,你这个CSS样式可以贡献一下么?多谢:0

  8. 八月 28, 2010

    我来用上去试试…谢谢分享咯

  9. 八月 25, 2010

    现在用ZWW的那个代码

  10. 八月 11, 2010

    这个还真难倒我了,不懂jQuery所以不会加个什么裤,哪位同学可以提示下呢,3Q!

  11. 八月 9, 2010

    路过的哪位热心同学给个JQuery 库呀? :razz:

  12. 七月 31, 2010

    发现用在我的WordPress-BBtheme-CMS模板上失效,不知道是和什么有冲突,试过其他模板倒是没问题

  13. 七月 31, 2010

    不知道是否和其他的JS有什么冲突?可以生成存档,但无存档效果

  14. 七月 31, 2010

    死活搞不定,博客已经加载JQ了,文件也按你的说明改了

  15. 七月 21, 2010

    试试 :mrgreen:

  16. 七月 14, 2010

    有一个问题呀,就是我安装后发,现在存档版本,排版不对,全是居中了,不好看,不像上上面那图一样,可以向左对齐,还可以分二级对齐,也不和你博客的存档那样美观。

  17. 七月 14, 2010

    :shock: 好像我的首页就有月存档插件。

  18. 七月 13, 2010

    佩服啊佩服!!!我之前就眼红万戈的那个存档呢~哈哈,抱走了!

  19. 七月 12, 2010

    怎么还不来啊……

    • 七月 12, 2010

      我想我不会那么粗心的,如果有多个文件,我会打包提供下载的。实在是没有另外的JS文件,抱歉。

    • 七月 12, 2010

      是不是你的博客页面没有加载JQuery ?

      • 七月 12, 2010

        加载的啊 我其他的jQ 都正常啊 你来帮我看看呢~

      • 七月 12, 2010

        话说 我也是加载WP自带的1.32的jQ库啊 应该不是jQ问题吧?
        难道还要其他的?

        • 七月 13, 2010

          问题找出,你可能下载的文件是我最初发表时的,后来稍微修改了下。
          你可以更新文件或者在页面内容里面写:

          1
          usejs=1;
          • 七月 13, 2010

            我的错 我的错
            我是在可视化模式下 加入内容的
            肯定不行的了
            我已经改好了……

  20. 七月 11, 2010

    大哥 你是不是少个一个JS文件啊……给出来吧 省的我慢慢找了啊……

  21. 七月 11, 2010

    哇 我就想要这个 可以伸缩的 在你这找到了 谢谢啊 哈哈

  22. 七月 11, 2010

    自定义功能很强,实现效果很好。
    比我自己写的好多了。。。。

  23. 七月 11, 2010

    太太太过份啦,这是我留着暑假的时候折腾玩的,居然被你抢先啦!!!!
    假装没看见,自己去折腾,哼~~~

    • 七月 11, 2010

      不厚道啊,藏私啊,群众眼睛雪亮的! :mrgreen:

    • 七月 11, 2010

      呵呵,纯属意外喽,我本来打算一考完就回去了,不料还在学校待了几天,结果,哈哈 :mrgreen:

  24. 七月 11, 2010

    某同学笑而不答 :mrgreen:
    我就来个沙发,拿走

    话说不是闭关了吗?咋又偷跑了

Trackbacks & Pingbacks

  1. 归档页(archives)无插件实现 | 子非我

Leave a Reply

Allowed Tags - You may use these HTML tags and attributes in your comment.

<a href="" title=""> <abbr title=""> <acronym title=""> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <q cite=""> <strong>

 :wink:  :-|  :-x  :twisted:  :)  8-O  :(  :roll:  :-P  :oops:  :-o  :mrgreen:  :lol:  :idea:  :-D  :evil:  :cry:  8)  :arrow:  :-?  :?:  :!:

Note: You may use basic HTML in your comments. Your email address will not be published.

Subscribe to this comment feed via RSS