CFcodes.com ColdFusion知识库

暂无内容
对于长文章分页我们通常会有一些解决方案,比如按行分页,但是按行分页不好排,你是10个字一行呢还是50个字一行?800*600屏幕是10个字的,1024*800是15个字的,你是固定死的几个字一行呢还是咋的?

按分段也是不太好的,有些段长,有些段短,你是每页固定几段的话,那么就要有些页长有些页短了,而且每个分页的意思连接也有可能有问题。如果按字数也是不好的,简单的说是操作上没办法控制。控制字数是按源码进行控制的,如果你只有文字还无所谓,但你的源码里包括超链接,图片等内容,你的文字分隔就会有问题了。

好些的方案是可以利用分隔符号进行文章分隔。

下面我就将利用分隔符进行分页的程序发布如下:

<!---
调用方法:
<cfoutput>
#PageList(content)#
#GetContent(content)#  
</cfoutput>
--->

<cfscript> 
    function GetPages(s,sep){ 
        pos = 1; 
        begin_pos = ArrayNew(1); 
        end_pos = ArrayNew(1); 
        while(pos gte 1){ 
            pos = FindNoCase(sep,s,pos); 
            if(pos gte 1){ 
                ArrayAppend(end_pos,pos -1); 
                pos = len(sep) + pos; 
                ArrayAppend(begin_pos,pos); 
            } 
        } 
        ArrayAppend(end_pos, len(s)); 
        ArrayPrepend(begin_pos,"1"); 
        return end_pos;begin_pos; 
    } 

    function PageList(s){ 
        if (ArrayLen(arguments) eq 1){ 
            sep = '[pages]'; 
        }else{ 
            sep = arguments[2]; 
        } 
        GetPages(s,sep);
        
        PageLink = "";
        
        if(Len(QUERY_STRING) GT 0){
            if(FindNoCase("cpage", query_string)){
                isQueryString    = true;
                QueryString    = ListDeleteAt(Query_string,ListContainsNoCase(query_string,"cpage","&"),"&");
                if(Len(QueryString) EQ 0){
                    isQueryString    = false;
                }
            }else{
                isQueryString    = true;
                QueryString    = query_string;
            }
        }else{
            isQueryString    = false;
            QueryString    = query_string;
        }
        
        for(i = 1;i lte arraylen(end_pos);i = i + 1){
        
            if(isQueryString IS true){
                itPage = i & "&" & QueryString;
            }else{
                itPage = i;
            }
            PageLink = PageLink & "<a href=" & script_name & "?cpage=" & itPage & ">第" & i & "页</a>&nbsp;&nbsp;&nbsp;"; 
        }
        
        if(arraylen(end_pos) gt 1){
            return PageLink;
        }else{
            return null;
        }
    } 

    function GetContent(str){ 
        if(isdefined("url.cpage")){ url.cpage = url.cpage;}else{url.cpage = 1;} 
        if(url.cpage gt arraylen(end_pos) or url.cpage lt 1){ 
            writeoutput("wrong page argu,please input right page argu,click 
            <a href=" & script_name & ">here</a> to back" ); 
        }else{ 
            bpos = begin_pos[url.cpage]; 
            epos = end_pos[url.cpage]; 
            writeoutput(mid(str,bpos,(epos-bpos+1))); 
        } 
    } 
</cfscript>

CFCodes.com的关闭经历了蛮长的一段时间,在此期间,我也感觉很无奈。

不过现在CFCodes.com再次恢复了,不过我挑选了最简单的UI来操作,反正都是技术性内容,也无所谓好看与否了,你说是吧,呵呵。

希望以后能与更多人进行CF方面的不断交流。