由于GAE(Google App Engine)被墙,导致PJBlog过去发布在GAE的源码无法正常下载,我们已于2015年1月4日转移至论坛附件。如发现类似问题,敬请反馈。

[PJBlog^2019]用户聚居地 - ASP中文开源博客系统PJBlog

 找回密码
 立即加入PJHOME

QQ登录

只需一步,快速开始

扫一扫,访问微社区

PJHOME-PJBlog官方论坛 你的关注和支持,是PJBlog不断成长的动力 指南 - 建议 - 展示 - 风云互联 - 合作

PJBlog3 经典版本(推荐) 最终版本:PJBlog3 V3.2.9.518(2011/11/01) 安装 - 升级 - 转换 - 模板 - 插件 - 反馈

PJBlog5 云博客(不推荐) 公测版本:PJBlog5 V1 公测版(2015/01/01) 发布 - 交流 - 文档 - 主题 - 插件 - 云平台

查看: 31101|回复: 81

PJBLOG二级分类“已解决”

[复制链接]
发表于 2008-6-8 08:54 | 显示全部楼层 |阅读模式
经过两周的努力,本人的二级分类设置和调用大部分已完成,本着“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行
  1. 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"
复制代码
改为
  1. 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"
复制代码
找到
  1. Sub CategoryList(ByVal action)
复制代码
action=0是横向菜单,action=1是树状菜。修改if action=1 then以下的代码。

为了保险起见,我是新写个SUBCategoryList2()
记得library.asp开头添加
Public Category_code1的声明
  1. '========================侧面二级分类树开始===============================
  2. function ListSub(id)'分类树二级分类
  3.     Dim log_Categorysub,cateList,parentID
  4.     parentID=id
  5.     TempVar=""
  6.    SQL="SELECT * FROM blog_Category WHERE cate_Parent ="&id&" ORDER BY cate_Order ASC"
  7.    Set log_Categorysub=Conn.Execute(SQL)
  8.    SQLQueryNums=SQLQueryNums+1
  9.    if not log_Categorysub.eof or not log_Categorysub.bof then
  10.    do while not log_Categorysub.eof
  11.    cateList=log_Categorysub("cate_ID")&"||"&parentID
  12.    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>
  13. ")
  14.    log_Categorysub.movenext
  15.    loop
  16.    log_Categorysub.close
  17.    set log_Categorysub=nothing
  18.   end if
  19. End function

  20. Sub CategoryList2() '分类树一级分类
  21. Dim Arr_Category,Category_Len,i
  22. Arr_Category=Application(CookieName&"_blog_Category")
  23. Category_code1=""
  24.    if ubound(Arr_Category,1)=0 then exit Sub
  25.     Category_Len=ubound(Arr_Category,2)
  26.     For i=0 to Category_Len
  27.        if int(Arr_Category(9,i))=0 or int(Arr_Category(9,i))=2 then
  28.      if Arr_Category(4,i) then
  29.        if cbool(Arr_Category(10,i)) then
  30.          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>
  31. ")
  32.         else
  33.         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>
  34. ")
  35.         end if
  36.      else
  37.        if cbool(Arr_Category(10,i)) then
  38.          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>
  39. ")
  40.         else
  41.          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>
  42. ")
  43.                 end if
  44.      end if
  45.     end if
  46.     ListSub(Arr_Category(0,i))
  47.    Next
  48. end sub
  49. '========================侧面二级分类树结束===============================
复制代码
顶部的导航栏我没动,这样好点,有兴趣的可改成下拉菜单。

在common\library.asp找到
  1. CategoryList(1)
  2. side_html_default=replace(side_html_default,"$Category_code$",Category_code)
  3. side_html=replace(side_html,"$Category_code$",Category_code)
复制代码
三句,

改为你自己的
  1. CategoryList2()
  2. side_html_default=replace(side_html_default,"$Category_code$",Category_code1)
  3. side_html=replace(side_html,"$Category_code$",Category_code1)
复制代码
具体的代码如下:(我的代码不是最好的,仅供参考)

3、修改发表、编辑日志的分类下拉列表框
发表日志为blogpost.asp,编辑日志blogedit.asp
找到
  1. lArticle.categoryID = request.form("log_CateID")
复制代码
下面增加
  1. lArticle.parentID = request.form("log_parentID")'写入日志父分类ID
复制代码
找到
  1. <div id="MsgHead">在 【<%=Conn.ExeCute("SELECT cate_Name FROM blog_Category WHERE cate_ID="&Request.Form("log_CateID")&"")(0)%>】 发表日志</div>
复制代码
改为
  1. <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>
将下面代码改为:
  1. <%
  2. dim num
  3. num = 0    '定义数形目录级,并附初始值0
  4. sort(0)         '调用过程
  5. sub sort(selec)
  6. dim log_Categorysub
  7. TempVar=""
  8. SQL="SELECT cate_ID,cate_Name,cate_count FROM blog_Category WHERE cate_Parent ="&selec&" and cate_URL='' ORDER BY cate_Order ASC"
  9. Set log_Categorysub=Conn.Execute(SQL)
  10. SQLQueryNums=SQLQueryNums+1
  11. 'if not log_Categorysub.eof or not log_Categorysub.bof then
  12.   do while not log_Categorysub.eof
  13.   if selec=0 then%>
  14.    <option value="<%=log_Categorysub("cate_ID")%>||<%=selec%>" >├<%=log_Categorysub("cate_Name")%></option>
  15.   <%else%>
  16.    <option value="<%=log_Categorysub("cate_ID")%>||<%=selec%>" >│  ├<%=log_Categorysub("cate_Name")%> [<%=log_Categorysub("cate_count")%>]  </option>
  17.   <%end if
  18.     num=num+1
  19.   sort(log_Categorysub("cate_ID"))
  20.   num=num-1
  21.   log_Categorysub.movenext
  22. loop
  23. log_Categorysub.close
  24. Set log_Categorysub = Nothing
  25. end sub
  26. %>
  27. </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")
改为
  1. Set log_Tags=Conn.Execute("SELECT tag_id,tag_name,tag_count FROM blog_tag")
复制代码
2、演示数据库     
修改发表日志为blogpost.asp补充
找到
lArticle.categoryID = request.form("log_CateID")
下面增加一句
  1. lArticle.parentID = request.form("log_parentID")'写入日志父分类ID
复制代码
找到这两句
dim log_editType,editTs
log_editType=Request.Form("log_editType")
改为
  1. dim log_editType,editTs,logID,log_CID,log_pID
  2. log_editType=Request.Form("log_editType")
  3. logID=Split(Request.Form("log_CateID"),"||")'获取日志一二级分类ID
  4. log_CID=logID(0)'一级分类ID
  5. log_pID=logID(1)'一级分类ID
复制代码
找到
<input name="log_CateID" type="hidden" id="log_CateID" value="<%=Request.Form("log_CateID")%>"/>
改为
  1. <input name="log_CateID" type="hidden" id="log_CateID" value="<%=log_CID%>"/><!--标记二级分类ID-->

  2. <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
改为
  1. 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))
改为
  1. logAuthor=weblog("log_Author")
  2. logID=Split(categoryID,"||")
  3. log_CID=logID(0)'二级分类ID
  4. log_pID=logID(1)'一级分类ID
  5. Conn.ExeCute("UPDATE blog_Category SET cate_count=cate_count-1 where cate_ID="&weblog("log_CateID"))
  6. Conn.ExeCute("UPDATE blog_Category SET cate_count=cate_count+1 where cate_ID="&CheckStr(log_CID))
复制代码
找到 约314行
weblog("log_CateID")=CheckStr(categoryID)
改为
  1. weblog("log_CateID")=CheckStr(log_CID)'二级分类ID
  2. weblog("log_parentID")=CheckStr(log_pID)'一级分类ID
复制代码
cls_logAction.asp大概就是这样,08-06-10
08-06-12,有网友反映编辑日志出错,特补充下面的代码
5、修改common\cacheMod.asp
找到  约22行
      set getTags=new tag
下面几行改为
  1. if log_View("log_ParentID")=0 then '获取父分类信息
  2.         getCate.load(int(log_View("log_CateID"))) '获取分类信息
  3.           else
  4.         getCate.load(int(log_View("log_ParentID")))
  5.           end if
  6.      Temp=Replace(Temp,"<$Cate_icon$>",getCate.cate_icon)
  7.      Temp=Replace(Temp,"<$Cate_Title$>",getCate.cate_Name)
  8.      Temp=Replace(Temp,"<$log_CateID$>",log_View("log_CateID"))
  9.      Temp=Replace(Temp,"<$log_parentID$>",getCate.cate.parentID)
复制代码
编辑日志就不会出错了,注意,日志的分类没有自动设定,需要重新选择

[ 本帖最后由 笑傲天 于 2008-6-12 21:43 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即加入PJHOME

x

评分

参与人数 2PJ币 +150 收起 理由
anson + 100 关注,请坚持整理更新
四川-果果 + 50 优秀原创,谢谢分享

查看全部评分

欢迎来到PJHOME社区,PJ有你更精彩!!
发表于 2008-6-8 09:23 | 显示全部楼层
支持一下,等一下回去慢慢研究!
补充一句,楼主的这个教程我回去试验的时候看的我一头雾水,写的也太粗糙了。像我们这种菜鸟真的是看不懂啊!

[ 本帖最后由 jaecool 于 2008-6-8 12:25 编辑 ]
欢迎来到PJHOME社区,PJ有你更精彩!!
回复 支持 反对

使用道具 举报

发表于 2008-6-8 10:50 | 显示全部楼层
节日快乐,感谢分享
欢迎来到PJHOME社区,PJ有你更精彩!!
回复 支持 反对

使用道具 举报

发表于 2008-6-8 12:13 | 显示全部楼层
先加分再找错。
顶一个哦!

大家帮忙测试,没有大问题,加精哦。。。
欢迎来到PJHOME社区,PJ有你更精彩!!
回复 支持 反对

使用道具 举报

发表于 2008-6-8 14:04 | 显示全部楼层
RSS链接出错,少了闭合引号,请楼主自修一下!
欢迎来到PJHOME社区,PJ有你更精彩!!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-6-8 21:25 | 显示全部楼层
检查过了,代码没有问题
欢迎来到PJHOME社区,PJ有你更精彩!!
回复 支持 反对

使用道具 举报

发表于 2008-6-8 23:31 | 显示全部楼层
后台我搞定了,就是出现二级分类的。会在子分类里出现!
楼主检查一下!
欢迎来到PJHOME社区,PJ有你更精彩!!
回复 支持 反对

使用道具 举报

发表于 2008-6-9 00:34 | 显示全部楼层
赞一个!有时间看看!
欢迎来到PJHOME社区,PJ有你更精彩!!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-6-9 09:55 | 显示全部楼层
自己顶一个,版主真行,二级分类的后台本人还未来得及做,能发一个么?
欢迎来到PJHOME社区,PJ有你更精彩!!
回复 支持 反对

使用道具 举报

发表于 2008-6-9 11:56 | 显示全部楼层
期待二级分类后台哦!期待死
欢迎来到PJHOME社区,PJ有你更精彩!!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入PJHOME

本版积分规则

关闭

PJHOME小黑板报上一条 /1 下一条

小黑屋|手机版|纯文字版|BBS.PJHOME.NET ( 粤ICP备12036560号-1 )

GMT+8, 2019-11-21 13:35 , Processed in 0.210950 second(s), 28 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表