2011-09-16 updated:
增加缓存控制,在首次访问时生成缓存并保存在数据库中,不用每次访问都要查询M遍数据库并经过N次for循环最终生成归档。
效率和速度对比:
之前的版本:
可看到内存使用峰值为38.25 MiB,SQL查询次数为1463次,PHP执行耗时2.560秒。
优化后的版本:
可看到内存使用峰值为28.29 MiB,SQL查询次数为83次,PHP执行耗时0.404秒。
二者的数据一对比你就知道啦 ![]()
PS:目前这个页面模板是我用过的greenthewebnews主题的,如用在你当前的主题不好看,你只需对比你的主题的page.php文件做少量修改即可。
hacklog-clean-archives.php 下载 (7.3 KB, 258 次)
以下内容于 2010年07月10日 发布:
话说那天在此童鞋的博客留言本上看到有人问及他的“网站地图”功能是怎么实现D,偶看到此童鞋笑而不答。这引起了偶的注意,淫荡地笑了下,发现问题啦(底部的JS代码露出了马脚(
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存档折叠显示效果相当酷的。
为1开启,设为0关闭。
monthorder (存档月份排序) :
new 【按时间倒叙排列月份(离现在最近的月份排最前)】
old 【按时间正序排列月份(离现在最远的月份排最前)】
postorder (存档文章排序):
new 【将最新的日志显示在第一位】
old 【将最旧的日志显示在第一位】
postcount:是否显示每月的文章数
0 :不显示
1 :显示
commentcount :是否显示文章评论数
0 :不显示
1 :显示
喜欢这篇文章吗?
请订阅本站 RSS feed 或





9:38 上午, 2011年09月22日柠檬 /
额,看着真神奇
1:24 下午, 2011年09月16日麦子花开 /
现在用的还是插件
今晚上完课回来看看就把这个折腾上
10:17 上午, 2011年04月5日SayMe /
额 本地使用了一下 和我的主题 兼容不好.使用此模板后 全站 错位.头部没有.底部也没有侧栏跑到了最边上 看来要把代码复制到我用的模板里面才行.麻烦告知哪些是关键代码.content那部分我知道 其他的代码是干嘛的就不知道了.wp新手很多不懂的.请指教
我现在用到是原版的clean archive reload插件
12:02 下午, 2011年04月5日荒野无灯 /
主要是把下面修改成自己模板的格式:
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<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 -->
12:06 下午, 2011年04月5日SayMe /
感谢啦 回去试试 刚刚解决了一个页面模板的小问题.加上这个应该不难
1:02 下午, 2011年04月5日SayMe /
还是不行呢 没有js效果 加载JQuery 库之后还是没有折叠效果啊.
您说的那个 页面内容写那些usejs=1;
monthorder=old;
postorder=old;
postcount=1;
commentcount=1;
应该没有用.
我是把<?php
function callback和两个函数复制到自己的模板里面 然后在head加载库.然后模板中添加 PostList();? >这个函数. 这样应该对吧
1:06 下午, 2011年04月5日SayMe /
按错了 按到回复上去了.我把< ?php function callback 还有< ? php class hacklog_archives 那一整个函数复制到我的模板里面. 然后在head加载库,再在模板里面添加
PostList(); ? >函数.这样应该没错吧?出来列表了,但是没有折叠效果.请问该怎么办?
1:19 下午, 2011年04月5日荒野无灯
以你下载的文件为基础修改。这个要修改的地方不多,顶多是几个class几个div罢了。还有,不要用windows记事本。
10:32 上午, 2011年03月20日朵未 /
试试看,又可以去掉一个插件了。
9:39 下午, 2011年02月9日spark /
您好,请问,为什么我没有JS折叠 效果呢?明明加载了 Jquery库。
http://ihacklog.com/gogogo/aHR0cDovL2JyZWFrYXdheS5tZS9hcmNoaXZlcy5odG1s
谢谢!
9:59 下午, 2011年02月9日spark /
不知怎么又折腾好了,谢谢!
5:37 下午, 2011年02月8日tsblue /
谢谢灯大师的代码
2:35 下午, 2010年11月1日loren /
楼主,你这个CSS样式可以贡献一下么?多谢:0
6:09 下午, 2010年11月3日荒野无灯 /
哪个样式 ?
5:25 下午, 2010年11月4日loren /
我插入以后,东西是正确显示出来了,但是页面的排版全是乱的。。。
12:40 下午, 2010年11月5日荒野无灯 /
我这个没有样式的。是你自己主题样式的问题了。
10:20 上午, 2010年08月28日立青 /
我来用上去试试…谢谢分享咯
5:28 下午, 2010年08月25日亿品元素 /
现在用ZWW的那个代码
3:48 下午, 2010年08月11日飞飞 /
这个还真难倒我了,不懂jQuery所以不会加个什么裤,哪位同学可以提示下呢,3Q!
11:27 下午, 2010年08月9日求索阁 /
路过的哪位热心同学给个JQuery 库呀?
5:48 下午, 2010年07月31日亿品元素 /
发现用在我的WordPress-BBtheme-CMS模板上失效,不知道是和什么有冲突,试过其他模板倒是没问题
1:03 下午, 2010年07月31日绿色实用软件 /
不知道是否和其他的JS有什么冲突?可以生成存档,但无存档效果
12:36 下午, 2010年07月31日绿色实用软件 /
死活搞不定,博客已经加载JQ了,文件也按你的说明改了
7:24 下午, 2010年07月21日MERROR /
试试
6:01 下午, 2010年07月25日MERROR /
嗯 已经用上了
4:57 下午, 2010年07月14日dwot /
有一个问题呀,就是我安装后发,现在存档版本,排版不对,全是居中了,不好看,不像上上面那图一样,可以向左对齐,还可以分二级对齐,也不和你博客的存档那样美观。
8:53 下午, 2010年07月24日荒野无灯 /
可以自己加入 CSS代码 控制。
4:02 下午, 2010年07月14日漠然 /
2:29 下午, 2010年07月13日老饕 /
佩服啊佩服!!!我之前就眼红万戈的那个存档呢~哈哈,抱走了!
12:02 下午, 2010年07月12日海天 /
怎么还不来啊……
5:02 下午, 2010年07月12日荒野无灯 /
我想我不会那么粗心的,如果有多个文件,我会打包提供下载的。实在是没有另外的JS文件,抱歉。
5:11 下午, 2010年07月12日荒野无灯 /
是不是你的博客页面没有加载JQuery ?
5:23 下午, 2010年07月12日海天 /
加载的啊 我其他的jQ 都正常啊 你来帮我看看呢~
5:42 下午, 2010年07月12日海天 /
话说 我也是加载WP自带的1.32的jQ库啊 应该不是jQ问题吧?
难道还要其他的?
11:16 上午, 2010年07月13日荒野无灯 /
问题找出,你可能下载的文件是我最初发表时的,后来稍微修改了下。
你可以更新文件或者在页面内容里面写:
11:21 上午, 2010年07月13日海天
我的错 我的错
我是在可视化模式下 加入内容的
肯定不行的了
我已经改好了……
4:25 下午, 2010年07月11日海天 /
大哥 你是不是少个一个JS文件啊……给出来吧 省的我慢慢找了啊……
4:08 下午, 2010年07月11日海天 /
哇 我就想要这个 可以伸缩的 在你这找到了 谢谢啊 哈哈
12:25 下午, 2010年07月11日zchiy2k /
自定义功能很强,实现效果很好。
比我自己写的好多了。。。。
1:59 下午, 2010年07月11日荒野无灯 /
你的那个也很强大呃,呵呵。
12:01 下午, 2010年07月11日万戈 /
太太太过份啦,这是我留着暑假的时候折腾玩的,居然被你抢先啦!!!!
假装没看见,自己去折腾,哼~~~
12:09 下午, 2010年07月11日winy /
不厚道啊,藏私啊,群众眼睛雪亮的!
10:50 下午, 2010年07月11日荒野无灯 /
呵呵,纯属意外喽,我本来打算一考完就回去了,不料还在学校待了几天,结果,哈哈
11:24 上午, 2010年07月11日winy /
某同学笑而不答
我就来个沙发,拿走
话说不是闭关了吗?咋又偷跑了
10:48 下午, 2010年07月11日荒野无灯 /
这几天还没回家呃