Salad UN

To Taste The Salad Of Life.

« KingCMS视频教程-模块安装和快速建立测试首页KingCMS中Fckeditor默认源代码编辑模式 »

KingCMS一级栏目列表调用下级文章修改法

[ At 2008-10-23 By Ash   3 comments ]

我修改的不是默认的文章模块,是oo出来的产品模块,所以这里贴的数据库表段不一样。


set rs=conn.execute("select "&sql&" from king__products_page where listid="&datalist(0,j)&" or  listid in (select listid from king__products_list where listid1= "&datalist(0,j)&") or listids like '%,"&datalist(0,j)&",%' order by kup desc,korder "&jsorder&",kid "&jsorder&";")


如果是文章模块应该是


set rs=conn.execute("select "&sql&" from kingart where listid="&datalist(0,j)&" or  listid in (select listid from kingart_list where listid1= "&datalist(0,j)&") or listids like '%,"&datalist(0,j)&",%' order by kup desc,korder "&jsorder&",kid "&jsorder&";")


这段程序没有测试过,其实就是关联查询,如我另一篇文章里面写的,这个是治标不治本的。


下面的方法我测试后没成功,不过有兴趣的可以自己试试。因数据库结构问题,只修改到支持两级。

  一、打开/page/article/fun.asp

  二、搜索到public sub createlist(l1)

    把public sub createlist(l1)
     ......
     end sub

  三、存盘上传。测试。

 

public sub createlist(l1)
 dim tmphtm,outhtm
 dim tmphtmlist,tmplist
 dim jshtm,jsnumber,zebra
 dim rs,irs,i,j,data,datalist,pid,plist,pidcount,length,datalista,datalistb'pidcount 总页数
 dim sql,suij,suijpagelist
 dim jsorder,listid,listpath,listname

 if len(l1)=0 then exit sub

 sql="listid,listname,listpath,listtemplate1,listtemplate2,listtitle,listkeyword,listdescription"'7 datalist
 set rs=conn.execute("select "&sql&" from kingart_list where listid in ("&l1&");")
  if not rs.eof and not rs.bof then
   datalist=rs.getrows()
  else
   redim datalist(0,-1)
  end if
  rs.close
 set rs=nothing

 sql="artid,listid,arttitle,artfrom,artdescription,artdate,artkeywords,artauthor,artpath,artimg,artgrade,artcontent"'10 data
 for j=0 to ubound(datalist,2)

 set rs=conn.execute("select listid,listid1 from kingart_list where listid="&datalist(0,j)&" or listid1="&datalist(0,j)&";")
  if not rs.eof and not rs.bof then
   datalista=rs.getrows()
    for i=0 to ubound(datalista,2)'开始循环列表
     if i=0 then
     datalistb=datalista(0,i)
     else
     datalistb=datalistb&","&datalista(0,i)
     end if
    next
  else
   redim datalista(0,-1)
  end if
  rs.close
 set rs=nothing

  '分析模板及标签,并获得值
  tmphtm=king.read(datalist(3,j),r_path&"[list]/"&datalist(4,j))'内外部模板结合后的htm代码
  tmphtmlist=king.getlist(tmphtm,"article",1)'type="list"部分的tag,包括{king:/}
  jshtm=king.getlabel(tmphtmlist,0)
  jsorder=king.getlabel(tmphtmlist,"order")
  if lcase(jsorder)="asc" then jsorder="asc" else jsorder="desc"
  jsnumber=fix(king.getlabel(tmphtmlist,"number"))
  zebra=king.getlabel(tmphtmlist,"zebra")
  suij=chr(3)&salt(20)&chr(2)'随机出来的替换参数
  suijpagelist=chr(3)&salt(16)&chr(2)

  '把tmphtm中的{king:...type=list/}标签替换为一个随机的标签;pagelist设置为一个随机标签
  tmphtm=replace(tmphtm,tmphtmlist,suij)

  '替换模板中的标签
  king.clearvalue
  king.value "title",encode(htmlencode(datalist(5,j)))
  king.value "listname",encode(htmlencode(datalist(1,j)))
  king.value "listpath",encode(king.inst&datalist(2,j))
  king.value "keywords",encode(htmlencode(datalist(6,j)))
  king.value "description",encode(htmlencode(datalist(7,j)))
  king.value "path",encode(king.inst&datalist(2,j))
  king.value "pagelist",encode(suijpagelist)
  king.value "listid",datalist(0,j)
  king.value "guide",encode(guide(datalist(0,j)))  '增加,可选的
  tmphtm=king.create(tmphtm,king.invalue)

  set rs=conn.execute("select "&sql&" from kingart where listid in ("&datalistb&") or listids like '%,"&datalist(0,j)&",%' order by artup desc,artorder "&jsorder&",artid "&jsorder&";")
  if not rs.eof and not rs.bof then
    data=rs.getrows()
    
    '初始化变量值
    pid=0
    pidcount=(ubound(data,2)+1)/jsnumber:if pidcount>int(pidcount) then pidcount=int(pidcount)+1'总页数
    length=ubound(data,2)'总记录数-1
    for i=0 to length'开始循环列表
 
     if cstr(listid)<>cstr(data(1,i)) then
      listid=data(1,i)
      set irs=conn.execute("select listname,listpath from kingart_list where listid="&listid&";")
       if not irs.eof and not irs.bof then
        listname=irs(0)
        listpath=irs(1)
       end if
       irs.close
      set irs=nothing
      
     end if

     king.clearvalue

     king.value "content",data(11,i)
     king.value "artid",data(0,i)
     king.value "listid",data(1,i)
     king.value "listname",encode(htmlencode(listname))
     king.value "listpath",encode(king.inst&listpath)
     king.value "title",encode(htmlencode(data(2,i)))
     king.value "from",encode(formatfrom(data(3,i)))
     king.value "description",encode(htmlencode(data(4,i)))
     king.value "date",encode(htmlencode(data(5,i)))
     king.value "keywords",encode(htmlencode(data(6,i)))
     king.value "author",encode(htmlencode(data(7,i)))
     king.value "image",encode(data(9,i))
     king.value "path",encode(getpath(data(0,i),data(10,i),king.inst&listpath&"/"&data(8,i)))
     king.value "zebra",king.mod2(i+1,zebra)
     king.value "commentid",encode(r_path&"|"&data(0,i))'传递评论参数


     tmplist=tmplist&king.createhtm(jshtm,king.invalue)'循环累加值到tmplist变量

     if ((i+1) mod jsnumber)=0 or i=length then '当整除于number参数或到最后一个记录的时候进入生成过程
'      if i=length then pid=pid+1
      plist=pagelist(king.inst&datalist(2,j)&"/$",pid+1,pidcount,length+1)

      outhtm=replace(tmphtm,suij,tmplist)
      outhtm=replace(outhtm,suijpagelist,plist)

      king.createfolder "../../"&datalist(2,j)
      if pid=0 then'列表第一页
       king.savetofile "../../"&datalist(2,j)&"/"&king_ext,outhtm
      else
       king.savetofile "../../"&datalist(2,j)&"/"&(pid+1)&"/"&king_ext,outhtm
      end if

      '初始化循环变量
      tmplist=""
      
      pid=pid+1
     end if

    next
   else
    outhtm=replace(tmphtm,suij,king.lang("error/rsnot"))
    outhtm=replace(outhtm,suijpagelist,"")
    king.savetofile "../../"&datalist(2,j)&"/"&king_ext,outhtm
   end if
   rs.close
  set rs=nothing
 next
end sub

贴着备份,来源:http://www.cgboke.com/kingcms/2008_10_23_101440259.htm

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

日历

最新评论及回复

最近发表

Powered By Z-Blog 1.8 Spirit Build 80722 Code detection by Codefense

Copyright 2008 www.s-un.cn. Some Rights Reserved.