WIXOO

Digest

为kingcms5自定义一个可以调用子栏目文章列表的标

作者:48747776 发布时间 10/01/20 来源 kingcms 论坛

首先打开根目录下page/article/fun.asp文件,在文件最后加上下面代码

function king_article_suball(l1) '根据listid递归找到其子listid

        dim ids,tempids,rs

        king_article_suball = l1

        set rs=conn.execute("select listid from kingart_list where listid1 in ("&l1&") ;")

        if not rs.eof and not rs.bof then

                tempids=rs.getString(,,"",",","")

                if len(tempids)>0 and InStr(tempids,",") then

                        tempids = left(tempids,len(tempids)-1)

                end if

                rs.close

                king_article_suball=king_article_suball(tempids)&","&king_article_suball

        else

                king_article_suball=l1

        end if       

end function

里面第一段代码。
然后找到找到本页面330行 把createlist1函数用以下代码替换

public sub createlist1(l1,l2)

        dim tmphtm,outhtm

        dim tmphtmlist,tmplist

        dim jshtm,jsnumber,zebra

        dim rs,irs,i,j,dp,data,datalist,pid,plist,pidcount,count,length'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,listcontent"'7 datalist

        set rs=conn.execute("select "&sql&" from kingart_list where listid="&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="a.artid,a.listid,arttitle,a.artfrom,artdescription,artdate,artkeywords,a.artauthor,'/'+b.listpath+'/'+artpath,artimg,artgrade"'10 data

 

        '分析模板及标签,并获得值

        tmphtm=king.read(datalist(3,0),r_path&"[list]/"&datalist(4,0))'内外部模板结合后的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)

dim jslevel,insql_id

        jslevel=king.getlabel(tmphtmlist,"level")

        select case lcase(jslevel)

                case"sub"

                                insql_id=" a.listid in ("&king_article_suball(l1)&")"

                case"current"

                                insql_id=" a.listid="&l1

                case"all"

                                insql_id1=" a.listid<>0 "

                case else

                                insql_id=" a.listid="&l1

        end select

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

        tmphtm=replace(tmphtm,tmphtmlist,suij)

 

        '替换模板中的标签

        king.clearvalue

        king.value "title",encode(htmlencode(datalist(5,0)))

        king.value "listname",encode(htmlencode(datalist(1,0)))

        king.value "listcontent",encode(htmlencode(datalist(8,0)))

        king.value "listpath",encode(king.inst&datalist(2,0))

        king.value "keywords",encode(htmlencode(datalist(6,0)))

        king.value "description",encode(htmlencode(datalist(7,0)))

        king.value "path",encode(king.inst&datalist(2,0))

        king.value "pagelist",encode(suijpagelist)

        king.value "listid",datalist(0,0)

        king.value "guide",encode(guide(datalist(0,0)))  '增加,可选的

        tmphtm=king.create(tmphtm,king.invalue)

 

        set dp=new record

                dp.pid=l2

                dp.rn=jsnumber

                dp.create "select "&sql&" from kingart a,kingart_list b where a.listid = b.listid and artshow=1 and ("&insql_id&" or listids like '%,"&datalist(0,0)&",%') order by artup desc,artorder "&jsorder&",a.artid "&jsorder&";"

                               

                if dp.length>-1 then

                        '初始化变量值

                        pid=l2

                        count=dp.count'总记录数

                        pidcount=dp.pagecount'总页数

                        length=dp.length'页记录数

 

                        for i=0 to length'开始循环列表

                       

                                king.clearvalue

                                king.value "artid",dp.data(0,i)

                                king.value "listid",dp.data(1,i)

                                king.value "listname",encode(htmlencode(datalist(1,0)))

                                king.value "listcontent",encode(htmlencode(datalist(8,0)))

                                king.value "listpath",encode(king.inst&datalist(2,0))

                                king.value "title",encode(htmlencode(dp.data(2,i)))

                                king.value "from",encode(formatfrom(dp.data(3,i)))

                                king.value "description",encode(htmlencode(dp.data(4,i)))

                                king.value "date",encode(htmlencode(dp.data(5,i)))

                                king.value "keywords",encode(htmlencode(dp.data(6,i)))

                                king.value "author",encode(htmlencode(dp.data(7,i)))

                                king.value "image",encode(dp.data(9,i))

                                king.value "path",encode(getpath(dp.data(0,i),dp.data(10,i),dp.data(8,i)))

                                king.value "zebra",king.mod2(i+1,zebra)

                                king.value "commentid",encode(r_path&"|"&dp.data(0,i))'传递评论参数

 

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

                        next

 

                        plist=pagelist(king.inst&datalist(2,0)&"/$/",pid,pidcount,count)

 

                        outhtm=replace(tmphtm,suij,tmplist)

                        outhtm=replace(outhtm,suijpagelist,plist)

 

                        king.createfolder "../../"&datalist(2,0)

                        if pid=1 then'列表第一页

                                king.savetofile "../../"&datalist(2,0)&"/"&king_ext,outhtm

                        else

                                king.savetofile "../../"&datalist(2,0)&"/"&pid&"/"&king_ext,outhtm

                        end if

                else

                        outhtm=replace(tmphtm,suij,king.lang("error/rsnot"))

                        outhtm=replace(outhtm,suijpagelist,"")

                        king.savetofile "../../"&datalist(2,0)&"/"&king_ext,outhtm

                end if

                if l2<pidcount then createlist1 l1,l2+1

        set dp=nothing

end sub


下面是解决分页问题

打开根目录下admin/article/index.asp文件,找到 460行:for i=1 to getlistpidcount(I1(nid))
整个for循环用以下代码替换,这里不再需要循环。 pct=int(((fix(ncount)+i)/listpidcounts)*100)

                                j=Timer

                                art.createlist1 I1(nid),1

                                II "<script>window.parent.progress('progress','"&king.lang("progress/createlist")&pct&"%','"&king.lang("progress/usetime")&formattime(ntime+(Timer-starttime))&"','"&pct&"%');$('body').prepend('<p>- ["&I1(nid)&"] ["&(fix(ncount))&"/"&listpidcounts&"] "&king.lang("progress/createtime")&formattime(Timer-j)&"</p>')</script>"
 

调用代码,level=sub,调用本分类及子分类下所有文章,current,仅调用本分类下文章,all,调用根目录下所有文章(不知道有用没,加上再说,哈哈) {king:article type="list" level="sub" number="2"}

        <h5><a href="(king:path/)">(king:title/)</a></h5>

        <p>(king:description size="200"/)</p>

        <p><i>(king:date mode="yy-MM-dd"/)</i><a href="(king:path/)">(king:siteurl/)(king:path/)</a></p>

{/king}