2016-07-20 10 views
1

Ich muss Codeigniter Paginierung anpassen. Derzeit arbeitet die Seitenumsetzung auf meiner Site so. (Ich verwende Bibliothek CI Paginierung)CodeIgniter Paginierung Anpassung

Current Pagination

Ich möchte meine Paginierung ähnliche Was

Required Pagination

aussehen und funktionieren kann ich für diese mit codeigniter der Paginierung Bibliothek tun? Gibt es bereits eine angepasste Bibliothek im Internet? Oder ich muss mein eigenes erstellen?

My $ config Array ist

$config['first_link'] = false; 
    $config['last_link'] = false; 
    $config ['prev_link'] = '<i class="fa fa-caret-left"></i>'; 
    $config ['next_link'] = '<i class="fa fa-caret-right"></i>'; 
    $config ['num_links'] = 2; 
    $config ['base_url'] = 'My base url'; 
    $config ['total_rows'] = 50; 
    $config ["per_page"] = 10; 
    $config ["uri_segment"] = 4; 
    $config ['use_page_numbers'] = TRUE; 
+0

einfach müssen Sie CSS auf aktuellen Seitenumbruch anwenden und es wie erforderlich machen. Rufen Sie diesen Link auf (http://www.iprogramerindia.in/how-to-apply-css-styles-to-pagination-in-codeigniter) /) – Bhavin

+0

Aber wie kann ich "..." Zwischen den Seitenzahlen hinzufügen? wie in "<1 ... 4 5 6 .. 17>" –

+0

editieren Sie Ihre Frage mit $ config Array-Codierung, die Sie bisher versucht haben. dann kann ich etwas probieren. und diese Antwort ist möglicherweise nützlich für Sie (http://stackoverflow.com/questions/20573882/custom-css-for-paging-in-codeigniter)[custom-css-for-paging-in-codeigniter] – Bhavin

Antwort

0

Schließlich ich mit der Lösung kam von CI Paginierung Bibliothek erstreckt . Neue Klasse Mypagination erstellt und die Standardmethode create_links() überschrieben.

Hier ist der Code

class Mypagination extends CI_Pagination { 

function __construct() 
{ 
    parent::__construct(); 
} 

public function create_links() 
{ 
    // If our item count or per-page total is zero there is no need to continue. 
    // Note: DO NOT change the operator to === here! 
    if ($this->total_rows == 0 OR $this->per_page == 0) 
    { 
     return ''; 
    } 

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

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

    // Check the user defined number of links. 
    $this->num_links = (int) $this->num_links; 

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

    // Keep any existing query string items. 
    // Note: Has nothing to do with any other query string option. 
    if ($this->reuse_query_string === TRUE) 
    { 
     $get = $this->CI->input->get(); 

     // Unset the controll, method, old-school routing options 
     unset($get['c'], $get['m'], $get[$this->query_string_segment]); 
    } 
    else 
    { 
     $get = array(); 
    } 

    // Put together our base and first URLs. 
    // Note: DO NOT append to the properties as that would break successive calls 
    $base_url = trim($this->base_url); 
    $first_url = $this->first_url; 

    $query_string = ''; 
    $query_string_sep = (strpos($base_url, '?') === FALSE) ? '?' : '&amp;'; 

    // Are we using query strings? 
    if ($this->page_query_string === TRUE) 
    { 
     // If a custom first_url hasn't been specified, we'll create one from 
     // the base_url, but without the page item. 
     if ($first_url === '') 
     { 
      $first_url = $base_url; 

      // If we saved any GET items earlier, make sure they're appended. 
      if (! empty($get)) 
      { 
       $first_url .= $query_string_sep.http_build_query($get); 
      } 
     } 

     // Add the page segment to the end of the query string, where the 
     // page number will be appended. 
     $base_url .= $query_string_sep.http_build_query(array_merge($get, array($this->query_string_segment => ''))); 
    } 
    else 
    { 
     // Standard segment mode. 
     // Generate our saved query string to append later after the page number. 
     if (! empty($get)) 
     { 
      $query_string = $query_string_sep.http_build_query($get); 
      $this->suffix .= $query_string; 
     } 

     // Does the base_url have the query string in it? 
     // If we're supposed to save it, remove it so we can append it later. 
     if ($this->reuse_query_string === TRUE && ($base_query_pos = strpos($base_url, '?')) !== FALSE) 
     { 
      $base_url = substr($base_url, 0, $base_query_pos); 
     } 

     if ($first_url === '') 
     { 
      $first_url = $base_url.$query_string; 
     } 

     $base_url = rtrim($base_url, '/').'/'; 
    } 

    // Determine the current page number. 
    $base_page = ($this->use_page_numbers) ? 1 : 0; 

    // Are we using query strings? 
    if ($this->page_query_string === TRUE) 
    { 
     $this->cur_page = $this->CI->input->get($this->query_string_segment); 
    } 
    else 
    { 
     // Default to the last segment number if one hasn't been defined. 
     if ($this->uri_segment === 0) 
     { 
      $this->uri_segment = count($this->CI->uri->segment_array()); 
     } 

     $this->cur_page = $this->CI->uri->segment($this->uri_segment); 

     // Remove any specified prefix/suffix from the segment. 
     if ($this->prefix !== '' OR $this->suffix !== '') 
     { 
      $this->cur_page = str_replace(array($this->prefix, $this->suffix), '', $this->cur_page); 
     } 
    } 

    // If something isn't quite right, back to the default base page. 
    if (! ctype_digit($this->cur_page) OR ($this->use_page_numbers && (int) $this->cur_page === 0)) 
    { 
     $this->cur_page = $base_page; 
    } 
    else 
    { 
     // Make sure we're using integers for comparisons later. 
     $this->cur_page = (int) $this->cur_page; 
    } 

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

    $uri_page_number = $this->cur_page; 

    // If we're using offset instead of page numbers, convert it 
    // to a page number, so we can generate the surrounding number links. 
    if (! $this->use_page_numbers) 
    { 
     $this->cur_page = (int) 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; 

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



    // Render the "Previous" link. 
    if ($this->prev_link !== FALSE && $this->cur_page !== 1) 
    { 
     $i = ($this->use_page_numbers) ? $uri_page_number - 1 : $uri_page_number - $this->per_page; 

     $attributes = sprintf('%s %s="%d"', $this->_attributes, $this->data_page_attr, (int) $i); 

     if ($i === $base_page) 
     { 
      // First page 
      $output .= $this->prev_tag_open.'<a href="'.$first_url.'"'.$attributes.$this->_attr_rel('prev').'>' 
       .$this->prev_link.'</a>'.$this->prev_tag_close; 
     } 
     else 
     { 
      $append = $this->prefix.$i.$this->suffix; 
      $output .= $this->prev_tag_open.'<a href="'.$base_url.$append.'"'.$attributes.$this->_attr_rel('prev').'>' 
       .$this->prev_link.'</a>'.$this->prev_tag_close; 
     } 

    } 

    // Render the "First" link. 
    if ($this->first_link !== FALSE && $this->cur_page > ($this->num_links + 1 + ! $this->num_links)) 
    { 
     // Take the general parameters, and squeeze this pagination-page attr in for JS frameworks. 
     $attributes = sprintf('%s %s="%d"', $this->_attributes, $this->data_page_attr, 1); 

     $output .= $this->first_tag_open.'<a href="'.$first_url.'"'.$attributes.$this->_attr_rel('start').'>' 
      .$this->first_link.'</a>'.$this->first_tag_close; 
    } 


    // Render the pages 
    if ($this->display_pages !== FALSE) 
    { 
     /* 
     * On page 4, show hidden page 2 
     */ 
     if($start == 4){ 
      $start--; 
     } 

     /* 
     * On pages after 4, show dots before pages 
     */ 
     if(($start)>4){ 
      $output .= '<div class="continues">. . .</div>'; 
     } 

     /* 
     * On page 4th last, show hidden page 2nd last 
     */ 
     if($start == ($num_pages-3) && $start > 4){ 
      $end++; 
     } 

     /* 
     * On last page, show hidden page 3rd last 
     */ 
     if($start == $num_pages && $start>3){ 
      $start--; 
     } 

     /* 
     * On page 1, show hidden page 3 
     */ 
     if($start == 1 && $end < $num_pages-1){ 
      $end++; 
     } 

     // Write the digit links 
     for ($loop = $start -1; $loop <= $end; $loop++) 
     { 
      $i = ($this->use_page_numbers) ? $loop : ($loop * $this->per_page) - $this->per_page; 

      $attributes = sprintf('%s %s="%d"', $this->_attributes, $this->data_page_attr, (int) $i); 

      if ($i >= $base_page) 
      { 
       if ($this->cur_page === $loop) 
       { 
        // Current page 
        $output .= $this->cur_tag_open.$loop.$this->cur_tag_close; 
       } 
       elseif ($i === $base_page) 
       { 
        // First page 
        $output .= $this->num_tag_open.'<a href="'.$first_url.'"'.$attributes.$this->_attr_rel('start').'>' 
         .$loop.'</a>'.$this->num_tag_close; 
       } 
       else 
       { 
        $append = $this->prefix.$i.$this->suffix; 
        $output .= $this->num_tag_open.'<a href="'.$base_url.$append.'"'.$attributes.$this->_attr_rel('start').'>' 
         .$loop.'</a>'.$this->num_tag_close; 
       } 

      } 
     } 

     /* 
     * On pages before last, show dots 
     */ 
     if($end < ($num_pages-1)){ 
      $output .= '<div class="continues">. . .</div>'; 
     } 

    } 

    // Render the "Last" link 
    if ($this->last_link !== FALSE && ($this->cur_page + $this->num_links + ! $this->num_links) < $num_pages) 
    { 
     $i = ($this->use_page_numbers) ? $num_pages : ($num_pages * $this->per_page) - $this->per_page; 

     $attributes = sprintf('%s %s="%d"', $this->_attributes, $this->data_page_attr, (int) $i); 

     $output .= $this->last_tag_open.'<a href="'.$base_url.$this->prefix.$i.$this->suffix.'"'.$attributes.'>' 
      .$this->last_link.'</a>'.$this->last_tag_close; 
    } 


    // Render the "next" link 
    if ($this->next_link !== FALSE && $this->cur_page < $num_pages) 
    { 
     $i = ($this->use_page_numbers) ? $this->cur_page + 1 : $this->cur_page * $this->per_page; 

     $attributes = sprintf('%s %s="%d"', $this->_attributes, $this->data_page_attr, (int) $i); 

     $output .= $this->next_tag_open.'<a href="'.$base_url.$this->prefix.$i.$this->suffix.'"'.$attributes 
      .$this->_attr_rel('next').'>'.$this->next_link.'</a>'.$this->next_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 
    return $this->full_tag_open.$output.$this->full_tag_close; 
} 

}

ich hinzugefügt haben

/* 
    * my comments here 
    */ 

Stil Kommentare, bevor Code, wo ich Änderungen vorgenommen.

-1

Versuchen CSS hier ein Beispiel - das einmal verwendet und es funktionierte

.dataTables_wrapper .dataTables_info.dataTables_paginate .pagination, 
.dataTables_wrapper .dataTables_paginate.dataTables_paginate .pagination { 
    margin: 0; 
} 



    .pagination { 
    display: inline-block; 
    padding-left: 0; 
    margin: 17px 0; 
    border-radius: 3px; 
} 
.pagination > li { 
    display: inline; 
} 
.pagination > li > a, 
.pagination > li > span { 
    position: relative; 
    float: left; 
    padding: 6px 12px; 
    line-height: 1.42857143; 
    text-decoration: none; 
    color: #373e4a; 
    background-color: #fff; 
    border: 1px solid #ddd; 
    margin-left: -1px; 
} 
.pagination > li:first-child > a, 
.pagination > li:first-child > span { 
    margin-left: 0; 
    border-bottom-left-radius: 3px; 
    border-top-left-radius: 3px; 
} 
.pagination > li:last-child > a, 
.pagination > li:last-child > span { 
    border-bottom-right-radius: 3px; 
    border-top-right-radius: 3px; 
} 
.pagination > li > a:hover, 
.pagination > li > span:hover, 
.pagination > li > a:focus, 
.pagination > li > span:focus { 
    z-index: 2; 
    color: #818da2; 
    background-color: #eeeeee; 
    border-color: #ddd; 
} 
.pagination > .active > a, 
.pagination > .active > span, 
.pagination > .active > a:hover, 
.pagination > .active > span:hover, 
.pagination > .active > a:focus, 
.pagination > .active > span:focus { 
    z-index: 3; 
    color: #fff; 
    background-color: #373e4a; 
    border-color: #949494; 
    cursor: default; 
} 
.pagination > .disabled > span, 
.pagination > .disabled > span:hover, 
.pagination > .disabled > span:focus, 
.pagination > .disabled > a, 
.pagination > .disabled > a:hover, 
.pagination > .disabled > a:focus { 
    color: #999999; 
    background-color: #fff; 
    border-color: #ddd; 
    cursor: not-allowed; 
} 
.pagination-lg > li > a, 
.pagination-lg > li > span { 
    padding: 10px 16px; 
    font-size: 15px; 
    line-height: 1.3333333; 
} 
.pagination-lg > li:first-child > a, 
.pagination-lg > li:first-child > span { 
    border-bottom-left-radius: 3px; 
    border-top-left-radius: 3px; 
} 
.pagination-lg > li:last-child > a, 
.pagination-lg > li:last-child > span { 
    border-bottom-right-radius: 3px; 
    border-top-right-radius: 3px; 
} 
.pagination-sm > li > a, 
.pagination-sm > li > span { 
    padding: 5px 10px; 
    font-size: 11px; 
    line-height: 1.5; 
} 
.pagination-sm > li:first-child > a, 
.pagination-sm > li:first-child > span { 
    border-bottom-left-radius: 2px; 
    border-top-left-radius: 2px; 
} 
.pagination-sm > li:last-child > a, 
.pagination-sm > li:last-child > span { 
    border-bottom-right-radius: 2px; 
    border-top-right-radius: 2px; 
} 
.pager { 
    padding-left: 0; 
    margin: 17px 0; 
    list-style: none; 
    text-align: center; 
} 
.pager li { 
    display: inline; 
} 
.pager li > a, 
.pager li > span { 
    display: inline-block; 
    padding: 5px 14px; 
    background-color: #fff; 
    border: 1px solid #ddd; 
    border-radius: 3px; 
} 
.pager li > a:hover, 
.pager li > a:focus { 
    text-decoration: none; 
    background-color: #eeeeee; 
} 
.pager .next > a, 
.pager .next > span { 
    float: right; 
} 
.pager .previous > a, 
.pager .previous > span { 
    float: left; 
} 
.pager .disabled > a, 
.pager .disabled > a:hover, 
.pager .disabled > a:focus, 
.pager .disabled > span { 
    color: #999999; 
    background-color: #fff; 
    cursor: not-allowed; 
} 
+0

Er fragte, wie Sie die Seitennummerierung anpassen können. Sie können keine Bibliothek in Ihrer Konfiguration hinzufügen. – Bugfixer

+0

Danke. Aber was versuchst du zu erzählen? Ich habe Codeigniter Paginierung Bibliothek geladen und es funktioniert gut. Ich möchte nur einen Weg finden, um Punkte "..." für versteckte Seitennummern hinzuzufügen –