修正Z-Blog的busfly文章列表插件第二处bug
2009-7-28 2:27:32 | 浏览:
评论数:5

本站在之前的文章中提出了busfly的文章列表插件的一个文章标题字数限制函数的Bug,并进行了修正。近日又发现了一处bug,这个bug出现在最新文章列表部分,我们将在下面的内容中指出bug,并给出修正方法。
在\PLUGIN\busfly_randomsort\目录下的include.asp文件中,函数 busfly_randomsort_BlogReBuild_randomsortnew 中有这么一行代码:
Set busfly_randomsort_objRS1=objConn.Execute("select top " & CStr(busfly_randomsort_NUM_STRNEW) & " [log_ID] from blog_Article WHERE ([log_ID]>0) AND ([log_Level]>2) order by log_ID desc")
请注意上述代码的红色部分 - 最新文章列表是按照 log_ID 进行降序排列的,大多数情况下这种排序方法不会有问题,不过有一种情况下就会出问题了:例如我们今天写了一篇草稿文章(假如log_ID 为2),但没有在今天就发布。另外,还写了一篇普通文章(log_ID 为3)并且今天就发布了。那么我们明天将草稿文章进行修改整理之后发布,并把时间设置为明天的时间(Z-Blog有这个功能)。如果按照上面的代码,显然在最新文章列表中log_ID 为3的文章将出现在log_ID 为2文章之前,而实际上应该出现在log_ID为2的文章之后。
解决办法:按照发布时间log_PostTime降序进行排序:
Set busfly_randomsort_objRS1=objConn.Execute("select top " & CStr(busfly_randomsort_NUM_STRNEW) & " [log_ID] from blog_Article WHERE ([log_ID]>0) AND ([log_Level]>2) order by [log_PostTime] DESC")
在您决定对include.asp中的相关代码进行修改之前,请注意首先对include.asp进行备份,以免在发现有其他错误时候无法进行恢复。
PS:如果您认为这不算是个Bug,那我只能遗憾地说 - 您不适合做程序员。