经过两周的努力,本人的二级分类设置和调用大部分已完成,本着“Creative Commons”精神,也是应网友的要求,将修改的过程写出来。由于改的很乱,需要整理后,再慢慢帖出来。(注:本人才开始学习ASP,代码不是很完善,供大家参考,效果参看:
www.lzcjxx.com)
在IE,MYIE下调试通过,效果图如下

左边分类下拉列表——右边首页树型目录

PJBlog二级分类修改过程
本人后台关闭了静态日志,本修改在动态模式下通过。
1、数据库设置
(1)打开分类blog_Category表中,说明一下数据结构
分类号:cate_ID,分类名称:cate_Name排列顺序:cate_Order,分类说明:cate_Intro,外部链接:cate_OutLink,链接地址: cate_URL(
暂时只能手动设置)
(2)增加一个字段,父分类:cate_Parent,类型为数字。一级分类的cate_Parent为0,二级分类的cate_Parent为它上级的cate_ID。
(3)打日志blog_Content表中,同样的方法增加一个父分类log_parentID。(
暂时只能手动设置)
如果不好改,下载我的演示数据库,进行测试。
(4)简单地设几个二级分类和日志,输入相应数据以便后面的测试,接下来全是ASP代码修改,强烈建设每做一步,做一下备件。(
由于本人的博客安的插件多,屡次个性化修改,代码变动太大,不能说出修改处在某行某列。)
2、修改首页侧面分类
打开common\cache.asp
找到 约175行
复制内容到剪贴板
代码:
SQL="SELECT cate_ID,cate_Name,cate_Order,cate_Intro,cate_OutLink,cate_URL,cate_icon,cate_count,cate_Lock,cate_local,cate_Secret FROM blog_Category ORDER BY cate_Order ASC"改为
复制内容到剪贴板
代码:
SQL="SELECT cate_ID,cate_Name,cate_Order,cate_Intro,cate_OutLink,cate_URL,cate_icon,cate_count,cate_Lock,cate_local,cate_Secret FROM blog_Category WHERE cate_parent=0 ORDER BY cate_Order ASC"找到
复制内容到剪贴板
代码:
Sub CategoryList(ByVal action)action=0是横向菜单,action=1是树状菜。修改if action=1 then以下的代码。
为了保险起见,我是新写个SUBCategoryList2()
记得library.asp开头添加
Public Category_code1的声明
复制内容到剪贴板
代码:
'========================侧面二级分类树开始===============================
function ListSub(id)'分类树二级分类
Dim log_Categorysub,cateList,parentID
parentID=id
TempVar=""
SQL="SELECT * FROM blog_Category WHERE cate_Parent ="&id&" ORDER BY cate_Order ASC"
Set log_Categorysub=Conn.Execute(SQL)
SQLQueryNums=SQLQueryNums+1
if not log_Categorysub.eof or not log_Categorysub.bof then
do while not log_Categorysub.eof
cateList=log_Categorysub("cate_ID")&"||"&parentID
Category_code1=Category_code1&" ├"&("<img src="""&log_Categorysub("cate_icon")&""" border=""0"" style=""margin:3px 4px -4px 0px;"" alt="""&log_Categorysub("cate_name")&"""/><a class=""CategoryA"" href=""default.asp?cateID="&log_Categorysub("cate_ID")&""" title="""&log_Categorysub("cate_name")&""">"&log_Categorysub("cate_name")&" ["&log_Categorysub("cate_count")&"]</a> <a href=""feed.asp?cateID="&log_Categorysub("cate_ID")&""" title=""订阅该分类内容""><img src=""images/rss.png"" border=""0"" style=""margin:3px 4px -1px 0px;"" alt=""""/></a>
")
log_Categorysub.movenext
loop
log_Categorysub.close
set log_Categorysub=nothing
end if
End function
Sub CategoryList2() '分类树一级分类
Dim Arr_Category,Category_Len,i
Arr_Category=Application(CookieName&"_blog_Category")
Category_code1=""
if ubound(Arr_Category,1)=0 then exit Sub
Category_Len=ubound(Arr_Category,2)
For i=0 to Category_Len
if int(Arr_Category(9,i))=0 or int(Arr_Category(9,i))=2 then
if Arr_Category(4,i) then
if cbool(Arr_Category(10,i)) then
if stat_ShowHiddenCate or stat_Admin then Category_code1=Category_code1&("<img src="""&Arr_Category(6,i)&""" border=""0"" style=""margin:3px 4px -4px 0px;"" alt="""&Arr_Category(3,i)&"""/><a class=""CategoryA"" href="""&Arr_Category(5,i)&""" title="""&Arr_Category(3,i)&""">"&Arr_Category(1,i)&"</a>
")
else
Category_code1=Category_code1&("<img src="""&Arr_Category(6,i)&""" border=""0"" style=""margin:3px 4px -4px 0px;"" alt="""&Arr_Category(3,i)&"""/><a class=""CategoryA"" href="""&Arr_Category(5,i)&""" title="""&Arr_Category(3,i)&""">"&Arr_Category(1,i)&"</a>
")
end if
else
if cbool(Arr_Category(10,i)) then
if stat_ShowHiddenCate or stat_Admin then Category_code1=Category_code1&("<img src="""&Arr_Category(6,i)&""" border=""0"" style=""margin:3px 4px -4px 0px;"" alt="""&Arr_Category(3,i)&"""/><a class=""CategoryA"" href=""default.asp?cateID="&Arr_Category(0,i)&""" title="""&Arr_Category(3,i)&""">"&Arr_Category(1,i)&" ["&Arr_Category(7,i)&"]</a> <a href=""feed.asp?cateID="&Arr_Category(0,i)&""" title=""订阅该分类内容""><img src=""images/rss.png"" border=""0"" style=""margin:3px 4px -1px 0px;"" alt=""""/></a>
")
else
Category_code1=Category_code1&("<img src="""&Arr_Category(6,i)&""" border=""0"" style=""margin:3px 4px -4px 0px;"" alt="""&Arr_Category(3,i)&"""/><a class=""CategoryA"" href=""default.asp?cateID="&Arr_Category(0,i)&""" title="""&Arr_Category(3,i)&""">"&Arr_Category(1,i)&" ["&Arr_Category(7,i)&"]</a> <a href=""feed.asp?cateID="&Arr_Category(0,i)&""" title=""订阅该分类内容""><img src=""images/rss.png"" border=""0"" style=""margin:3px 4px -1px 0px;"" alt=""""/></a>
")
end if
end if
end if
ListSub(Arr_Category(0,i))
Next
end sub
'========================侧面二级分类树结束===============================顶部的导航栏我没动,这样好点,有兴趣的可改成下拉菜单。
在common\library.asp找到
复制内容到剪贴板
代码:
CategoryList(1)
side_html_default=replace(side_html_default,"$Category_code$",Category_code)
side_html=replace(side_html,"$Category_code$",Category_code)三句,
改为你自己的
复制内容到剪贴板
代码:
CategoryList2()
side_html_default=replace(side_html_default,"$Category_code$",Category_code1)
side_html=replace(side_html,"$Category_code$",Category_code1)具体的代码如下:(我的代码不是最好的,仅供参考)
3、修改发表、编辑日志的分类下拉列表框
发表日志为blogpost.asp,编辑日志blogedit.asp
找到
复制内容到剪贴板
代码:
lArticle.categoryID = request.form("log_CateID")下面增加
复制内容到剪贴板
代码:
lArticle.parentID = request.form("log_parentID")'写入日志父分类ID找到
复制内容到剪贴板
代码:
<div id="MsgHead">在 【<%=Conn.ExeCute("SELECT cate_Name FROM blog_Category WHERE cate_ID="&Request.Form("log_CateID")&"")(0)%>】 发表日志</div>改为
复制内容到剪贴板
代码:
<div id="MsgHead">在 【<%=Conn.ExeCute("SELECT cate_Name FROM blog_Category WHERE cate_ID="&log_CID&"")(0)%>】 发表日志</div>找到
<option value="" selected="selected" style="color:#333">请选择分类</option>
将下面代码改为:
复制内容到剪贴板
代码:
<%
dim num
num = 0 '定义数形目录级,并附初始值0
sort(0) '调用过程
sub sort(selec)
dim log_Categorysub
TempVar=""
SQL="SELECT cate_ID,cate_Name,cate_count FROM blog_Category WHERE cate_Parent ="&selec&" and cate_URL='' ORDER BY cate_Order ASC"
Set log_Categorysub=Conn.Execute(SQL)
SQLQueryNums=SQLQueryNums+1
'if not log_Categorysub.eof or not log_Categorysub.bof then
do while not log_Categorysub.eof
if selec=0 then%>
<option value="<%=log_Categorysub("cate_ID")%>||<%=selec%>" >├<%=log_Categorysub("cate_Name")%></option>
<%else%>
<option value="<%=log_Categorysub("cate_ID")%>||<%=selec%>" >│ ├<%=log_Categorysub("cate_Name")%> [<%=log_Categorysub("cate_count")%>] </option>
<%end if
num=num+1
sort(log_Categorysub("cate_ID"))
num=num-1
log_Categorysub.movenext
loop
log_Categorysub.close
Set log_Categorysub = Nothing
end sub
%>
</select>修改未完,请待续,代码可能有些错误,大家帮忙指正。
为方便大家,上传部分文件,对照修改,强烈建议做好备件!!
1、cache.asp
注意:common/cache.asp,行 392这句
Set log_Tags=Conn.Execute("SELECT tag_id,tag_name,tag_sys,tag_count FROM blog_tag")
改为
复制内容到剪贴板
代码:
Set log_Tags=Conn.Execute("SELECT tag_id,tag_name,tag_count FROM blog_tag")2、演示数据库
修改发表日志为blogpost.asp补充
找到
lArticle.categoryID = request.form("log_CateID")
下面增加一句
复制内容到剪贴板
代码:
lArticle.parentID = request.form("log_parentID")'写入日志父分类ID找到这两句
dim log_editType,editTs
log_editType=Request.Form("log_editType")
改为
复制内容到剪贴板
代码:
dim log_editType,editTs,logID,log_CID,log_pID
log_editType=Request.Form("log_editType")
logID=Split(Request.Form("log_CateID"),"||")'获取日志一二级分类ID
log_CID=logID(0)'一级分类ID
log_pID=logID(1)'一级分类ID找到
<input name="log_CateID" type="hidden" id="log_CateID" value="<%=Request.Form("log_CateID")%>"/>
改为
复制内容到剪贴板
代码:
<input name="log_CateID" type="hidden" id="log_CateID" value="<%=log_CID%>"/><!--标记二级分类ID-->
<input name="log_parentID" type="hidden" id="log_parentID" value="<%=log_pID%>"/><!--标记一级分类ID-->修改的时候思路很清晰,可惜没有作记录,现在整理起来,竞找不到方向。有点晕。后面还有敬请期待!!!08-06-09
4、修改class\cls_logAction.asp
找到
public categoryID,logTitle,logAuthor,logEditType
改为
复制内容到剪贴板
代码:
public categoryID,parentID,logTitle,logAuthor,logEditType,logID,log_CID,log_pID找到
Set weblog=Server.CreateObject("ADODB.RecordSet")
categoryID = 0
下面增加
parentID=0'默认父分类为0
找到
weblog.addNew
weblog("log_CateID")=CheckStr(categoryID)
下面增加
weblog("log_parentID")=CheckStr(parentID)'父分类
找到
logAuthor=weblog("log_Author")
Conn.ExeCute("UPDATE blog_Category SET cate_count=cate_count-1 where cate_ID="&weblog("log_CateID"))
Conn.ExeCute("UPDATE blog_Category SET cate_count=cate_count+1 where cate_ID="&CheckStr(categoryID))
改为
复制内容到剪贴板
代码:
logAuthor=weblog("log_Author")
logID=Split(categoryID,"||")
log_CID=logID(0)'二级分类ID
log_pID=logID(1)'一级分类ID
Conn.ExeCute("UPDATE blog_Category SET cate_count=cate_count-1 where cate_ID="&weblog("log_CateID"))
Conn.ExeCute("UPDATE blog_Category SET cate_count=cate_count+1 where cate_ID="&CheckStr(log_CID))找到 约314行
weblog("log_CateID")=CheckStr(categoryID)
改为
复制内容到剪贴板
代码:
weblog("log_CateID")=CheckStr(log_CID)'二级分类ID
weblog("log_parentID")=CheckStr(log_pID)'一级分类IDcls_logAction.asp大概就是这样,08-06-10
08-06-12,有网友反映编辑日志出错,特补充下面的代码
5、修改common\cacheMod.asp
找到 约22行
set getTags=new tag
下面几行改为
复制内容到剪贴板
代码:
if log_View("log_ParentID")=0 then '获取父分类信息
getCate.load(int(log_View("log_CateID"))) '获取分类信息
else
getCate.load(int(log_View("log_ParentID")))
end if
Temp=Replace(Temp,"<$Cate_icon$>",getCate.cate_icon)
Temp=Replace(Temp,"<$Cate_Title$>",getCate.cate_Name)
Temp=Replace(Temp,"<$log_CateID$>",log_View("log_CateID"))
Temp=Replace(Temp,"<$log_parentID$>",getCate.cate.parentID)编辑日志就不会出错了,注意,日志的分类没有自动设定,需要重新选择
[
本帖最后由 笑傲天 于 2008-6-12 21:43 编辑 ]