Z-blog的分类置顶方法
Zblog提供了置顶的功能,不过,默认情况下为全局置顶,即:只要文章属性设置为置顶,那么在任何分类页都会在顶部显示该文章。我们都知道这是很不合理的,因为置顶文章与当前分类的主题未必吻合,很容易给读者造成疑惑,尤其是置顶文章很多或者需要将置顶文章的摘要也显示出来的情况下。
经过研究,我发现只要修改下面两段代码,就可以实现分类置顶的功能了,即:置顶文章不会总是显示出来,各个分类下的置顶单独与分类页关联。
步骤如下:
1.打开function/c_system_event.asp文件,函数Buildallcache内(1410行附近),原代码为:
objRS.Open("SELECT [log_ID] FROM [blog_Article] WHERE ([log_Level]>1)
AND ([log_Istop]=True) ORDER BY [log_PostTime] DESC")
If (Not objRS.bof) And (Not objRS.eof) Then
objRS.PageSize = ZC_DISPLAY_COUNT
ReDim aryAllList(objRS.PageCount+1)
For i=1 to objRS.PageCount
objRS.AbsolutePage=i
For j = 1 To objRS.PageSize
If j=1 Then aryAllList(i)="IstopPage" & i & "["
aryAllList(i)=aryAllList(i) & objRS("log_ID") & ";"
If j=objRS.PageSize Then aryAllList(i)=aryAllList(i) & "]"
objRS.MoveNext
If objRS.EOF Then aryAllList(i)=aryAllList(i) & "]":Exit For
Next
Next
End If
修改为(红色部分是发生变化的部分):
objRS.Open("SELECT [log_ID],[log_CateID] FROM [blog_Article] WHERE ([log_Level]>1)
AND ([log_Istop]=True) ORDER BY [log_PostTime] DESC")
If (Not objRS.bof) And (Not objRS.eof) Then
objRS.PageSize = ZC_DISPLAY_COUNT
ReDim aryAllList(objRS.PageCount+1)
For i=1 to objRS.PageCount
objRS.AbsolutePage=i
For j = 1 To objRS.PageSize
If j=1 Then aryAllList(i)="IstopPage" & i & "["
aryAllList(i)=aryAllList(i) & objRS("log_ID") & ";" & objRS("log_CateID") & ";"
If j=objRS.PageSize Then aryAllList(i)=aryAllList(i) & "]"
objRS.MoveNext
If objRS.EOF Then aryAllList(i)=aryAllList(i) & "]":Exit For
Next
Next
End If
2.打开function/c_system_lib.asp文件,函数ExportByCache内(1319行附近),原代码为:
Redim aryArticleList(UBound(aryArticle))
for i=LBound(aryArticle) To (UBound(aryArticle)-1)
Set objArticle = New TArticle
objArticle.ID=aryArticle(i)
If objArticle.LoadCache Then
aryArticleList(i)=objArticle.Template_Article_Multi
End if
Set objArticle = Nothing
修改后(红色部分为有变化的部分):
Redim aryArticleList((UBound(aryArticle)-LBound(aryArticle)+1)/2)
for i=LBound(aryArticle) To (UBound(aryArticle)-1) step 2
Set objArticle = New TArticle
objArticle.ID=aryArticle(i)
If (intCateId=Empty or intCateId=Cint(aryArticle(i+1))) and objArticle.LoadCache Then
aryArticleList(i/2)=objArticle.Template_Article_Multi
End if
Set objArticle = Nothing
经zblog 1.6 final 60816版本测试正常(谁有1.7版本的欢迎测试,非常感谢),效果是主页显示所有置顶,分类页显示各自分类的置顶。如果希望主页不显示任何置顶可以删去最后一段代码中的 intCateId=Empty or。
文章来源:http://www.winshome.com/post/176.html
