K9 通用版 博客版 主题版 地方门户版 企业版 |   企业(ASP) 分类 使用 分享 疑问 模板 建议 帮助 错误 其他
+新建主题 [Ajax]
填写帐号密码即可完成注册
+新建话题 最新回复排序 最新主题排序 精华帖子

列表页调用本分类下所有子类文章,完美解决分页问题

123Next >

fox1383164k 发表于:10-09-01 23:59 [添加收藏] 楼主 [回复] #Top#
fox1383164k 人气:377 积分:864 金币:3006
KC元老 灌水狂人
首先要打开站点根目录下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}
day24 发表于:10-09-27 23:52 沙发 [回复] #Top#
day24 人气:9 积分:68 金币:148
分页好像不行啊
snoopyfansxr 发表于:11-01-03 19:10 板凳 [回复] #Top#
snoopyfansxr 人气:30 积分:199 金币:585
谢谢楼主 好强大 不错 解决了困扰很久的问题,我觉得这个bug要修复一下
veryus 发表于:11-01-04 11:04 4楼 [回复] #Top#
veryus 人气:4 积分:24 金币:3
可惜,PHP版的没人解决,这个CMS刚开始用觉得还行,用到后来确实还很不习惯。
snoopyfansxr 发表于:11-01-04 11:38 5楼 [回复] #Top#
snoopyfansxr 人气:30 积分:199 金币:585
这个很经典啦,但是为什么改了以后,静态生成列表的时候出现异常?出现了170%的完成进度?
snoopyfansxr 发表于:11-01-05 11:56 6楼 [回复] #Top#
snoopyfansxr 人气:30 积分:199 金币:585
您好 请问您改好以后 生成列表的时候会不会这样啊
snoopyfansxr 发表于:11-01-05 13:17 7楼 [回复] #Top#
snoopyfansxr 人气:30 积分:199 金币:585
下面是解决分页问题

打开根目录下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>"

我不改动这里 ,现在好了,可以分页,也可以调用了,也不会有超出100%的生成进度
lwp1018 发表于:11-04-20 14:30 8楼 [回复] #Top#
lwp1018 人气:15 积分:62 金币:100
为什么我弄着不行呢?
hucaoshan 发表于:11-05-22 03:38 9楼 [回复] #Top#
hucaoshan 人气:12 积分:19 金币:99
谢楼主和7楼的兄弟,我也解决了!
zongxiao08 发表于:11-06-08 15:03 10楼 [回复] #Top#
zongxiao08 人气:145 积分:1044 金币:3553
谢楼主

123Next >

发表回复

帐号 匿名发布 审核后可见 [加载完整在线编辑器]
内容
验证码
KingCMS 内容管理系统

关于我们 联系我们 广告报价 付款方式 站点导航

Copyright © 2004-2015 Focuznet All rights reserved.

广州唯众网络科技有限公司 粤ICP备08008106号