09/10/2018, 23:59

Help me.. Smarty Template...

Em đang dùng Smarty Template.
Em làm code chia số trang như sau:
Code:
<?php
// [START] Code for showing page numbers
  $limit = 0;
  $qr = mysql_query("SELECT * FROM post") or die (mysql_error());
  $check = mysql_num_rows($qr);
  $split = $check/$new_post_per_page;
  $countpg = ceil($split);
  if (isset($_GET['page']) && $_GET['page'] > '1'){
      $page = $_GET['page'];
      $limit = ($page-1)*$new_post_per_page;
      $new_post_per_page <= $new_post_per_page+$new_post_per_page;}
  else{$page = 1;}
// Show!!
$b = 1;
$pages = array();
    for ($i=$page-$page+1;$i<=$page-1;$i++)
      {$pages[$b][pp] = "[<A href="index.php?act=default&page=$i">$i</a>] ";$b++;} // Previous Page(s)
      $pages[$b][cp] = "<B>$page</B> "; // Current Page
      if ($countpg > $page){
        for ($a=$page+1;$a<=$countpg;$a++)
        {$pages[$b][np] = "[<A href="index.php?act=default&page=$a">$a</a>] ";$b++;}} // Next Page(s)
$template->assign('pages',$pages);
// [END] Code for showing page numbers
?>
Gán nội dung của số trang vào mảng $page, tiếp theo làm sao chèn vào template đây? Em dùng thử {section}:
Code:
{section name=b loop=$pages}
{$pages[b].pp}{$pages[b].cp}{$pages[b].np}
{/section}
Nhưng ko work! Nó chỉ hiện ra 1 link tiếp theo thôi...
Code trên nếu dùng echo từ file PHP thì work 100%, còn chèn vào template chẳng biết làm sao..!
Bác nào biết chỉ em cái....Thanks...
Hero_vanchien viết 02:09 ngày 10/10/2018
Với cách dùng array này của bạn thì bạn không dùng section được mà phải dùng foreach.
nethue viết 02:05 ngày 10/10/2018
Thử làm như thế này xem sao:
{foreach from=$pages item=pages}
{$pages.pp}{$pages.cp}{$pages.np}
{/foreach}
Hero_vanchien viết 02:13 ngày 10/10/2018
Được gửi bởi nethue
Thử làm như thế này xem sao:
{foreach from=$pages item=pages}
{$pages.pp}{$pages.cp}{$pages.np}
{/foreach}
Cái này mà chạy được chính xác thì mình bỏ nghề!!!!

Dùng cái dưới này mới đúng:
Code:
{foreach from=$pages item=page}
   {$page.pp}{$page.cp}{$page.np}
{/foreach}
gaulucky92 viết 02:09 ngày 10/10/2018
hì mình vừa qua quanphp.net hỏi, admin chỉ thế này, WORK 100% ( xem thử nè: http://websiteviet.info ==> nhét vào TE được rồi ), vẫn dùng section thôi:
File PHP:
Code:
// [START] Code for showing page numbers 
  $limit = 0; 
  $qr = mysql_query("SELECT * FROM post") or die (mysql_error()); 
  $check = mysql_num_rows($qr); 
  $split = $check/$new_post_per_page; 
  $countpg = ceil($split); 
  if (isset($_GET['page']) && $_GET['page'] > '1'){ 
      $page = $_GET['page']; 
      $limit = ($page-1)*$new_post_per_page; 
      $new_post_per_page <= $new_post_per_page+$new_post_per_page;} 
  else{$page = 1;} 
// Show!! 
$b = 1;  
$pages = array(); 
    // Previous Page(s) 
    for ($i=$page-$page+1;$i<=$page-1;$i++) 
    { 
        $pages[$b] = "[<A href=\"index.php?act=default&page=$i\">$i</a>] "; 
        $b++; 
    }  

    // Current Page 
    $pages[$b] = "<B>$page</B> ";  
// ban thieu cai nay 
    $b++; 

    // Next Page(s)     
    if ($countpg > $page) 
    { 
        for ($a=$page+1;$a<=$countpg;$a++) 
        { 
            $pages[$b] = "[<A href=\"index.php?act=default&page=$a\">$a</a>] "; 
            $b++; 
        } 
    }  
//fix for smarty 
$pages[] = '';  
$template->assign('pages',$pages); 
// [END] Code for showing page numbers
File template:
Code:
{section name=b loop=$pages} 
{$pages[b]} 
{/section}
Admin bên đó bảo là code tui có 2 lỗi:
cách làm của bạn đúng có 2 lỗi
+ về phía bạn: bạn quên tăng $b sau current page nên khi hiển thị bị mất trang hiện tại
+ về phía template(cái này không hiểu sao): smarty cắt mất phần tử cuối cùng của mảng
Cuối cùng cũng fix được dù sao cũng cảm ơn các bạn có lòng giúp đỡ
Bài liên quan
0