2013-08-02 15 views
7

Mam dziwny problem, mój obecny związek stronicowanie nie jest podświetlony adresy URL paginacji zrobiłem wygląda następująco:Pagination aktualny link nie podkreślając

site.com/list/50/?some=value 

Wszystko działa świetnie, ale obecny związek paginacja zdaniem nie jest podświetlony. Sprawdziłem CSS i jest ok, problem pochodzi z biblioteki, jak sądzę.

To jest mój kod. Nie widzę tutaj nic złego:

$pagination['base_url'] = site_url('asd'); 
    if($_SERVER['QUERY_STRING'] !==''){ 
    $pagination['suffix'] = '/?'.$_SERVER['QUERY_STRING']; 
    } 
    $pagination['first_url'] = site_url('asd'); 
    $pagination['total_rows'] = $total_rows[0]->total; 
    $pagination['first_link'] = ' First '; 
    $pagination['last_link'] = ' Last '; 
    $pagination['next_link'] = ' Next '; 
    $pagination['prev_link'] = ' Prev '; 
    $pagination['num_links'] = 5; 

    $this->pagination->initialize($pagination); 

Każda wskazówka doceniona.

i pisać moją bibliotekę, która edytowany przez znaczników także:

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 
/** 
* CodeIgniter 
* 
* An open source application development framework for PHP 5.1.6 or newer 
* 
* @package  CodeIgniter 
* @author  ExpressionEngine Dev Team 
* @copyright Copyright (c) 2008 - 2011, EllisLab, Inc. 
* @license  http://codeigniter.com/user_guide/license.html 
* @link  http://codeigniter.com 
* @since  Version 1.0 
* @filesource 
*/ 

// ------------------------------------------------------------------------ 

/** 
* Pagination Class 
* 
* @package  CodeIgniter 
* @subpackage Libraries 
* @category Pagination 
* @author  ExpressionEngine Dev Team 
* @link  http://codeigniter.com/user_guide/libraries/pagination.html 
*/ 
class CI_Pagination { 

    var $base_url   = ''; // The page we are linking to 
    var $prefix   = ''; // A custom prefix added to the path. 
    var $suffix   = ''; // A custom suffix added to the path. 

    var $total_rows   = ''; // Total number of items (database results) 
    var $per_page   = 10; // Max number of items you want shown per page 
    var $num_links   = 2; // Number of "digit" links to show before/after the currently viewed page 
    var $cur_page   = 0; // The current page being viewed 
    var $first_link   = '&lsaquo; First'; 
    var $next_link   = '&gt;'; 
    var $prev_link   = '&lt;'; 
    var $last_link   = 'Last &rsaquo;'; 
    var $uri_segment  = 3; 
    var $full_tag_open  = '<p class="CI-pagination">'; 
    var $full_tag_close  = '</p>'; 
    var $first_tag_open  = '<span class="pagination-first">'; 
    var $first_tag_close   = '&nbsp;</span>'; 
    var $last_tag_open  = '<span class="pagination-last">&nbsp;'; 
    var $last_tag_close  = '</span>'; 
    var $first_url   = ''; // Alternative URL for the First Page. 
    var $cur_tag_open  = '<span class="pagination-current">&nbsp;<a href="javascript:void(0)" class="btn btn-small">'; 
    var $cur_tag_close  = '</a></span>'; 
    var $next_tag_open  = '<span class="pagination-next">&nbsp;'; 
    var $next_tag_close  = '&nbsp;</span>'; 
    var $prev_tag_open  = '<span class="pagination-prev">&nbsp;'; 
    var $prev_tag_close  = '</span>'; 
    var $num_tag_open  = '<span class="pagination-num">&nbsp;'; 
    var $num_tag_close  = '</span>'; 
    var $page_query_string   = FALSE; 
    var $query_string_segment  = 'per_page'; 
    var $display_pages  = TRUE; 
    var $anchor_class  = 'btn btn-small'; 

    /** 
    * Constructor 
    * 
    * @access public 
    * @param array initialization parameters 
    */ 
    public function __construct($params = array()) 
    { 
     if (count($params) > 0) 
     { 
      $this->initialize($params); 
     } 

     if ($this->anchor_class != '') 
     { 
      $this->anchor_class = 'class="'.$this->anchor_class.'" '; 
     } 

     log_message('debug', "Pagination Class Initialized"); 
    } 

    // -------------------------------------------------------------------- 

    /** 
    * Initialize Preferences 
    * 
    * @access public 
    * @param array initialization parameters 
    * @return void 
    */ 
    function initialize($params = array()) 
    { 
     if (count($params) > 0) 
     { 
      foreach ($params as $key => $val) 
      { 
       if (isset($this->$key)) 
       { 
        $this->$key = $val; 
       } 
      } 
     } 
    } 

    // -------------------------------------------------------------------- 

    /** 
    * Generate the pagination links 
    * 
    * @access public 
    * @return string 
    */ 
    function create_links() 
    { 
     // If our item count or per-page total is zero there is no need to continue. 
     if ($this->total_rows == 0 OR $this->per_page == 0) 
     { 
      return ''; 
     } 

     // Calculate the total number of pages 
     $num_pages = ceil($this->total_rows/$this->per_page); 

     // Is there only one page? Hm... nothing more to do here then. 
     if ($num_pages == 1) 
     { 
      return ''; 
     } 

     // Determine the current page number. 
     $CI =& get_instance(); 

     if ($CI->config->item('enable_query_strings') === TRUE OR $this->page_query_string === TRUE) 
     { 
      if ($CI->input->get($this->query_string_segment) != 0) 
      { 
       $this->cur_page = $CI->input->get($this->query_string_segment); 

       // Prep the current page - no funny business! 
       $this->cur_page = (int) $this->cur_page; 
      } 
     } 
     else 
     { 
      if ($CI->uri->segment($this->uri_segment) != 0) 
      { 
       $this->cur_page = $CI->uri->segment($this->uri_segment); 

       // Prep the current page - no funny business! 
       $this->cur_page = (int) $this->cur_page; 
      } 
     } 

     $this->num_links = (int)$this->num_links; 

     if ($this->num_links < 1) 
     { 
      show_error('Your number of links must be a positive number.'); 
     } 

     if (! is_numeric($this->cur_page)) 
     { 
      $this->cur_page = 0; 
     } 

     // Is the page number beyond the result range? 
     // If so we show the last page 
     if ($this->cur_page > $this->total_rows) 
     { 
      $this->cur_page = ($num_pages - 1) * $this->per_page; 
     } 

     $uri_page_number = $this->cur_page; 
     $this->cur_page = floor(($this->cur_page/$this->per_page) + 1); 

     // Calculate the start and end numbers. These determine 
     // which number to start and end the digit links with 
     $start = (($this->cur_page - $this->num_links) > 0) ? $this->cur_page - ($this->num_links - 1) : 1; 
     $end = (($this->cur_page + $this->num_links) < $num_pages) ? $this->cur_page + $this->num_links : $num_pages; 

     // Is pagination being used over GET or POST? If get, add a per_page query 
     // string. If post, add a trailing slash to the base URL if needed 
     if ($CI->config->item('enable_query_strings') === TRUE OR $this->page_query_string === TRUE) 
     { 
      $this->base_url = rtrim($this->base_url).'&amp;'.$this->query_string_segment.'='; 
     } 
     else 
     { 
      $this->base_url = rtrim($this->base_url, '/') .'/'; 
     } 

     // And here we go... 
     $output = ''; 

     // Render the "First" link 
     if ($this->first_link !== FALSE AND $this->cur_page > ($this->num_links + 1)) 
     { 
      $first_url = ($this->first_url == '') ? $this->base_url : $this->first_url; 
      $output .= $this->first_tag_open.'<a '.$this->anchor_class.'href="'.$first_url.'">'.$this->first_link.'</a>'.$this->first_tag_close; 
     } 

     // Render the "previous" link 
     if ($this->prev_link !== FALSE AND $this->cur_page != 1) 
     { 
      $i = $uri_page_number - $this->per_page; 

      if ($i == 0 && $this->first_url != '') 
      { 
       $output .= $this->prev_tag_open.'<a '.$this->anchor_class.'href="'.$this->first_url.'">'.$this->prev_link.'</a>'.$this->prev_tag_close; 
      } 
      else 
      { 
       $i = ($i == 0) ? '' : $this->prefix.$i.$this->suffix; 
       $output .= $this->prev_tag_open.'<a '.$this->anchor_class.'href="'.$this->base_url.$i.'">'.$this->prev_link.'</a>'.$this->prev_tag_close; 
      } 

     } 

     // Render the pages 
     if ($this->display_pages !== FALSE) 
     { 
      // Write the digit links 
      for ($loop = $start -1; $loop <= $end; $loop++) 
      { 
       $i = ($loop * $this->per_page) - $this->per_page; 

       if ($i >= 0) 
       { 
        if ($this->cur_page == $loop) 
        { 
         $output .= $this->cur_tag_open.$loop.$this->cur_tag_close; // Current page 
        } 
        else 
        { 
         $n = ($i == 0) ? '' : $i; 

         if ($n == '' && $this->first_url != '') 
         { 
          $output .= $this->num_tag_open.'<a '.$this->anchor_class.'href="'.$this->first_url.'">'.$loop.'</a>'.$this->num_tag_close; 
         } 
         else 
         { 
          $n = ($n == '') ? '' : $this->prefix.$n.$this->suffix; 

          $output .= $this->num_tag_open.'<a '.$this->anchor_class.'href="'.$this->base_url.$n.'">'.$loop.'</a>'.$this->num_tag_close; 
         } 
        } 
       } 
      } 
     } 

     // Render the "next" link 
     if ($this->next_link !== FALSE AND $this->cur_page < $num_pages) 
     { 
      $output .= $this->next_tag_open.'<a '.$this->anchor_class.'href="'.$this->base_url.$this->prefix.($this->cur_page * $this->per_page).$this->suffix.'">'.$this->next_link.'</a>'.$this->next_tag_close; 
     } 

     // Render the "Last" link 
     if ($this->last_link !== FALSE AND ($this->cur_page + $this->num_links) < $num_pages) 
     { 
      $i = (($num_pages * $this->per_page) - $this->per_page); 
      $output .= $this->last_tag_open.'<a '.$this->anchor_class.'href="'.$this->base_url.$this->prefix.$i.$this->suffix.'">'.$this->last_link.'</a>'.$this->last_tag_close; 
     } 

     // Kill double slashes. Note: Sometimes we can end up with a double slash 
     // in the penultimate link so we'll kill all double slashes. 
     $output = preg_replace("#([^:])//+#", "\\1/", $output); 

     // Add the wrapper HTML if exists 
     $output = $this->full_tag_open.$output.$this->full_tag_close; 

     return $output; 
    } 
} 
// END Pagination Class 

/* End of file Pagination.php */ 
/* Location: ./system/libraries/Pagination.php */ 

Według mojej bibliotece stronicowania, wszystkie moje łącza podział na strony drukowane są jako class="pagination-num" i class="pagination-current" dodaje się tylko do pierwszego łącza stronicowania, niewiarygodne :/

Przy zmianie strony, paginacji zawsze wygląda tak jak na tym obrazie, brak zmian między strony do innego:/

enter image description here

+0

masz dodać dowolną klasę CSS dla bieżącego połączenia, jeśli nie dodać do stronicowania config $ config ['cur_tag_open'] = '' i $ config ['cur_tag_close'] = ''; możesz użyć dowolnego tagu – umefarooq

+0

@umefarooq na pewno dodałem oba dla bieżącego, następnego, prev, itd. Problem polega na tym, że nie są one przełączane i wyglądają tak samo przy drukowaniu linków paginacji :( – sbaaaang

Odpowiedz

11

Read this i znajdź sekcję "Dostosowywanie linku" Aktualna strona ". Użyj tego, aby dodać niestandardowy znacznik, a następnie dodaj odpowiedni CSS.

Edit: PO znalazł następujące rozwiązanie:

$pagination['uri_segment'] = 2; 
+0

już zrobione, ale to nie jest problem wszystkie moje łącza są wyprowadzane jako class = "numer paginacji", sprawdź moje odpowiedzi na aktualizacje proszę – sbaaaang

+0

@sbaaaang Sprawdź renderowany kod HTML, czy pokazuje prawidłowy CSS? Czy ładujesz poprawny plik CSS (czy css jest dodawany do Jeśli oba są tak, być może masz jakieś css nadpisywanie tego stylu, próbując używać! ważne lub użyj czegoś takiego jak firebug, aby przejrzeć css, aby zobaczyć wszystkie style zastosowane do rozpiętości – Danny

+0

tak już sprawdzone wszystkie, proszę sprawdzić obrazek zamieszczony powyżej, za każdym razem, gdy zmieniam stronę, linki stronicowania wyglądają tak, jak pokazano na obrazku, żadnych zmian, które mam na myśli:/ – sbaaaang

1

dodać te linie i pisać css dla .aktualnie klasy

$pagination['cur_tag_open'] = '<a href="javascript:void(0)" class="current">'; 

$pagination['cur_tag_close'] = '</a>'; 
$pagination['cur_page'] = {put current page no here}; 
0

Sprawdź $ config [ ''] uri_segment. W przeciwnym razie użyj jquery. Czy coś jest takie jak: -

Załóżmy link: -

<div id="my-ci-link"><?php echo $links; ?></div> 

pisać jQuery: -

$('#my-ci-link strong').css('color','green'); 
-1
<pre> 
    if ($this->uri->segment(2)) 
       $data['page'] = $this->uri->segment(2); 
      else 
       $data['page'] = 0; 
      $config["cur_page"] = $data['page']; 
    ... 
</pre>