官方首页 | 无图版 | BBS首页
PJBlog3 2.8.5.157 新版发布 下载|升级(2008.8.26) 来给PJ3提提发展建议 2008版 PJHOME 珍藏/纪念版官方T恤 正式发布! PJ3内测团队主创人员身份,性格,特点吐血大曝光
PJBlog技术支持论坛使用问题总索引 PJ-Blog 3 斑竹日志 【独家】我使用过的三种空间,与客服的精彩故事 Z-Blog,Wordpress,Bo-Blog转换到PJBlog
发新话题
打印

PJBLOG二级分类“已解决”

本主题由 四川-果果 于 2008-6-11 14:55 移动

PJBLOG二级分类“已解决”

经过两周的努力,本人的二级分类设置和调用大部分已完成,本着“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)'一级分类ID
cls_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 编辑 ]
附件: 您所在的用户组无法下载或查看附件
本帖最近评分记录
  • anson PJ币 +100 关注,请坚持整理更新 2008-6-9 12:32
  • 四川-果果 PJ币 +50 优秀原创,谢谢分享 2008-6-8 12:13

TOP

支持一下,等一下回去慢慢研究!
补充一句,楼主的这个教程我回去试验的时候看的我一头雾水,写的也太粗糙了。像我们这种菜鸟真的是看不懂啊!

[ 本帖最后由 jaecool 于 2008-6-8 12:25 编辑 ]

TOP

节日快乐,感谢分享

TOP

先加分再找错。
顶一个哦!

大家帮忙测试,没有大问题,加精哦。。。

请大家把问题解决后请自行修改编辑帖子标明“已解决”,并将解决方法补全,以方便日后查看
对于热心解答者,给予一定的奖励!支持适用原创。大家多多加油,共同把PJFourm建设好!

TOP

RSS链接出错,少了闭合引号,请楼主自修一下!

皮肤 插件 个性修改 酷博聚合>> PJZonE

TOP

检查过了,代码没有问题

TOP

后台我搞定了,就是出现二级分类的。会在子分类里出现!
楼主检查一下!

请大家把问题解决后请自行修改编辑帖子标明“已解决”,并将解决方法补全,以方便日后查看
对于热心解答者,给予一定的奖励!支持适用原创。大家多多加油,共同把PJFourm建设好!

TOP

赞一个!有时间看看!
偶的站:SnailStory蜗牛居の故事

在插件区发帖请注明你的发帖类别
求助帖请在发帖前看看置顶帖和搜索一下论坛
并尽量截图详细说明你出现的问题

TOP

自己顶一个,版主真行,二级分类的后台本人还未来得及做,能发一个么?

TOP

期待二级分类后台哦!期待死

TOP

发新话题