免插件生成文章存档页面[飞速版]——2011-09-16更新
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, 277 次)
以下内容于 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 :显示








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