SmartyPagine and mod_rewrite

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Cosmin Chiru

    SmartyPagine and mod_rewrite

    Hello,

    I'm using SmartyPaginate to paginate results. Thing is I'm also using
    mod_rewrite for the entire site and the paginate link should look like
    this: "/products/pages/1". How can I do that? Thanks in advance.

  • CFC4N

    #2
    Re: SmartyPagine and mod_rewrite


    Cosmin Chiru 写道:
    Hello,
    >
    I'm using SmartyPaginate to paginate results. Thing is I'm also using
    mod_rewrite for the entire site and the paginate link should look like
    this: "/products/pages/1". How can I do that? Thanks in advance.
    =============== =============== =============== =====
    You can write a entire function or class !

    E.G :

    CLASS >>>>
    class Pager{
    //ç”Ÿæˆçš„é¡µç ï¼ˆäº‹å®žä¸Šä¸ ç”¨ä¹Ÿè¡Œï¼‰
    var $pageNumber='';

    //需要分类的 条目总数
    var $totalItems=0;
    //数据连接相 关
    var $conn;
    var $sql;
    //每页显示几个条目
    var $itemsPerPage=3 ;

    //总页数
    var $totalPageNumbe r=0;
    //当前页码!
    var $currentPageNum ber=1;

    //一个页面显 示几个页码
    var $length=10;


    //需要分页的 url
    var $url='';
    function
    Pager($conn,$sq l,$currentPageN umber,$itemsPer Page,$length,$u rl){
    $this->currentPageNum ber=$currentPag eNumber;
    $this->conn=$conn;
    $this->sql=$sql;
    $this->itemsPerPage=$ itemsPerPage;
    $this->length=$length ;
    $this->url=$url;
    $this->url.=(stristr( $this->url,'?')!=fals e)?'&':'?';
    //Url里有"?"å°± 加"&"æ²¡æœ‰å° ±åŠ "?"
    $this->getTotalPageNu mber();
    }
    function getTotalItems() {
    //for adodb
    $rs=$this->conn->Execute($thi s->sql);
    $this->totalItems=$ rs->RecordCount( );
    return $this->totalItems;
    }
    function getTotalPageNum ber(){

    $this->totalPageNumbe r=ceil($this->getTotalItems( )/$this->itemsPerPage );

    return $this->totalPageNumbe r;
    }

    //SQL里 LIMIT start,length 中的起始值
    function getLimitStart() {
    $start=($this->currentPageNum ber-1)*$this->itemsPerPage ;
    return $start;
    }
    //SQL里 LIMIT start,length 中的length
    function getLimitItems() {
    return $this->itemsPerPage ;
    }
    function getRsPerPage(){
    $modiSQL=$this->sql." limit ".$this->getLimitStart( )."
    ,".$this->getLimitItems( );
    //偶用的是ado db的说
    $modiRS=$this->conn->Execute($modiS QL);
    $arr=$modiRS->GetArray();
    return $arr;
    }

    //主函数.ä¸­æ– ‡åˆ†é¡µ
    function getPageNumber() {
    if ($this->getTotalPageNu mber()>1){


    $pageNumber='å½ “前第'.$this->currentPageNum ber.'页/å…±'.$this->totalPageNumbe r.'页';

    //显示第一页 和前一页
    if ($this->currentPageNum ber>1){
    //第一页
    //First Page
    $pageNumber.="< B><A HREF=".$this->url."page=1>ç¬ ¬ä¸€é¡µ</A>
    </B";
    //前一页
    //Previous Page
    $pageNumber.="< B><A
    HREF=".$this->url."page=".($ this->currentPageNum ber-1).">前一页 </A>
    </B>";
    }
    //The start number is the first number of all pages which show
    on the current page.

    $startNumber=in tval($this->currentPageNum ber/$this->length)*$thi s->length;

    //Prev N page
    //交界处
    if ($this->currentPageNum ber>=$this->length){
    $pageNumber.="[<B><A
    HREF=".$this->url."page=".($ startNumber-1).">".($startN umber-1)."</A></B>]...";

    }

    $leftPageNumber =0;
    for ($i=$startNumbe r;$i<=$this->totalPageNumbe r;$i++){
    if ($i==0)continue ;
    if ($i-$startNumber<$t his->length){
    if ($i==$this->currentPageNum ber){
    $pageNumber.="[<b>$i</b>]";
    }else{
    $pageNumber.="[<A
    HREF=".$this->url."page=".$i .">".$i."</A>]";
    }
    }else{
    $leftPageNumber =$this->totalPageNumbe r-$i+1;
    break;
    }
    }
    //显示下一个 分页列表
    if ($leftPageNumbe r>=1){
    $pageNumber.=". ..[<B><A
    HREF=".$this->url."page=".($ startNumber+$th is->length).">".($ startNumber+$th is->length)."</A></B>]
    ";
    }

    if ($this->currentPageNum ber!=$this->totalPageNumbe r){
    //Next page
    $pageNumber.="< B><A
    HREF=".$this->url."page=".($ this->currentPageNum ber+1).">下一 页</A>
    </B>";
    //Last page
    $pageNumber.="< B><A
    HREF=".$this->url."page=".$t his->totalPageNumbe r.">最后页 </A</B>";

    }

    $this->pageNumber=$pa geNumber;
    return $this->pageNumber;

    }


    }


    //英文分页
    function getPageNumber2( ){
    if ($this->getTotalPageNu mber()>1){


    $pageNumber='P' .$this->currentPageNum ber.'/'.$this->totalPageNumbe r.'';

    //显示第一页 和前一页
    if ($this->currentPageNum ber>1){
    //第一页
    //First Page
    $pageNumber.="< B><A HREF=".$this->url."page=1>FI RST</A>
    </B";
    //前一页
    //Previous Page
    $pageNumber.="< B><A
    HREF=".$this->url."page=".($ this->currentPageNum ber-1).">PREV</A>
    </B>";
    }
    //The start number is the first number of all pages which show
    on the current page.

    $startNumber=in tval($this->currentPageNum ber/$this->length)*$thi s->length;

    //Prev N page
    //交界处
    if ($this->currentPageNum ber>=$this->length){
    $pageNumber.="[<B><A
    HREF=".$this->url."page=".($ startNumber-1).">".($startN umber-1)."</A></B>]...";

    }

    $leftPageNumber =0;
    for ($i=$startNumbe r;$i<=$this->totalPageNumbe r;$i++){
    if ($i==0)continue ;
    if ($i-$startNumber<$t his->length){
    if ($i==$this->currentPageNum ber){
    $pageNumber.="[<b>$i</b>]";
    }else{
    $pageNumber.="[<A
    HREF=".$this->url."page=".$i .">".$i."</A>]";
    }
    }else{
    $leftPageNumber =$this->totalPageNumbe r-$i+1;
    break;
    }
    }
    //显示下一个 分页列表
    if ($leftPageNumbe r>=1){
    $pageNumber.=". ..[<B><A
    HREF=".$this->url."page=".($ startNumber+$th is->length).">".($ startNumber+$th is->length)."</A></B>]
    ";
    }

    if ($this->currentPageNum ber!=$this->totalPageNumbe r){
    //Next page
    $pageNumber.="< B><A
    HREF=".$this->url."page=".($ this->currentPageNum ber+1).">NEXT</A>
    </B>";
    //Last page
    $pageNumber.="< B><A
    HREF=".$this->url."page=".$t his->totalPageNumbe r.">LAST</A </B>";
    }

    $this->pageNumber=$pa geNumber;
    return $this->pageNumber;

    }


    }

    }
    //$currentPageNum ber=( isset($_GET['page']) ) ? intval($_GET['page']) :
    1;
    //include("PAGENU MBER/class.pagenumbe r.php");
    //$pageNumber= new
    PageNumber($ado dbConn,$sql,$cu rrentPageNumber ,10,3,3,"test.p hp");
    //echo $pageNumber->getPageNumber2 ();
    //echo "<br>";
    //echo $pageNumber->getPageNumber( );
    ?>

    FUNCTION >>>
    function page($num, $perpage, $curr_page, $mpurl) {
    $multipage = '';
    if($num $perpage) {
    $page = 10;
    $offset = 2;

    $pages = ceil($num / $perpage);
    $from = $curr_page - $offset;
    $to = $curr_page + $page - $offset - 1;
    if($page $pages) {
    $from = 1;
    $to = $pages;
    } else {
    if($from < 1) {
    $to = $curr_page + 1 - $from;
    $from = 1;
    if(($to - $from) < $page && ($to - $from) < $pages) {
    $to = $page;
    }
    } elseif($to $pages) {
    $from = $curr_page - $pages + $to;
    $to = $pages;
    if(($to - $from) < $page && ($to - $from) < $pages) {
    $from = $pages - $page + 1;
    }
    }
    }
    $multipage .= "<a href=\"$mpurl&p age=1\"><font
    face=webdings>9 </font></a ";
    for($i = $from; $i <= $to; $i++) {
    if($i != $curr_page) {
    $multipage .= "<a href=\"$mpurl&p age=$i\">$i</a";
    } else {
    $multipage .= '<u><b>'.$i.'</b></u';
    }
    }
    $multipage .= $pages $page ? " ... <a
    href=\"$mpurl&p age=$pages\">$p ages</a<a
    href=\"$mpurl&p age=$pages\"><F ont face=webdings>: </font></a>" : " <a
    href=\"$mpurl&p age=$pages\"><F ont face=webdings>: </font></a>";
    }
    //echo $multipage;
    return $multipage;
    }

    Comment

    Working...