CodeIgniter Pagination | Sayfalama Sınıfı ile Uygulama Örneği

Eyl 12, 2019
codeigniter pagination codeigniter sayfalama codeigniter pagination sınıfı php codeigniter pagination sayfalama örneği codeigniter blog pagination codeigniter helper pagination php sayfalama codeigniter 3 pagination codeigniter pagination kullanımı
CodeIgniter Pagination | Sayfalama Sınıfı ile Uygulama Örneği

Daha önceki yazılarımda bahsetmiştim Codeigniter bir alet çantası diye. Alet çantasından kullanacağımız sayfalama(pagination) sınıfı. Çalışma mantığı her hangi bir siteye baktığınızda sayfa değiştirmek için altta ileri geri ve sayıların olduğu bir ufak ön yüz vardır. Bu sayede sayfa hızı düşmez ve daha kullanışlı bir hal alır. Örneğin blog sitelerinde, haber sitelerinde vs. Gelelim kullanım şekline.

En temel yapısı şu şekilde: 

Controller php dosyamızda fonksiyon içine yazacağımız alan:

$this->load->library('pagination');$config['base_url'] = 'http://example.com/index.php/test/page/';$config['total_rows'] = 200;//veri tabanında kaç satır var sorusunun cevabı. bu sayede sayfalama için gereken link yapısını oluşturuyor.$config['per_page'] = 20;//her sayfada kaç data gösterilecekse onu yazıyoruz buraya$this->pagination->initialize($config);echo $this->pagination->create_links();//bu kısım sayfalamak için gereken sayı ve ileri geri tuşlarının temel halinin çıktısını geriyor

en temeli bu şekilde fakat bu şekilde bir işimize pek yaramaz. Temelden bir seviye daha ileriye gidelim.

Benim kullandığım şekil ve düzen ise şu şekilde:

Model PHP dosyasındaki fonksiyonlarım:

public function blogList($where = [], $select = '*', $limit, $pkCount){//bu fonksiyon blog veritabanından limiti kullanarak listeyi çekiyor.        return $this->db->select($select)            ->join('blogCategories', 'blogCategories.id=blogContent.blogCategory', 'left')            ->where($where)            ->limit($limit, $pkCount)            ->get('blogContent')            ->result();}public function blogListCount($where = [], $select = '*'){//kaç satır var onu hesaplaması için yazılmış olan fonksiyon        return $this->db->select($select)            ->join('blogCategories', 'blogCategories.id=blogContent.blogCategory', 'left')            ->where($where)            ->count_all_results('blogContent');}

Helper PHP dosyamda şu şekilde bir yardımcı yazdım:

if (!function_exists('paginationHelper')) {    function paginationHelper($baseUrl, $totalRows, $perPage, $uriSegment, $usePageNumber = false, $attributes = [])    {        $ci = get_instance();        $ci->load->library('pagination');        $config = ['base_url' => $baseUrl,                   'total_rows' => $totalRows,                   'per_page' => $perPage,                   'uri_segment' => $uriSegment,                   'use_page_numbers' => $usePageNumber,                   'first_link' => ' << First ',                   'last_link' => ' Last >> ',                   /*template for pagination*/                   'attributes' => $attributes,                   'full_tag_open' => "
    ", 'full_tag_close' => "
", 'num_tag_open' => '
  • ', 'num_tag_close' => '
  • ', 'cur_tag_open' => "
  • ", 'cur_tag_close' => "
  • ", 'next_tag_open' => "
  • ", 'next_tag_close' => "
  • ", 'prev_tag_open' => "
  • ", 'prev_tag_close' => "
  • ", 'first_tag_open' => "
  • ", 'first_tag_close' => "
  • ", 'last_tag_open' => "
  • ", 'last_tag_close' => "
  • "]; $ci->pagination->initialize($config); return $ci->pagination->create_links(); }}

    contoller PHP dosyası:

    public function blog()    {$perPage = 12;$pageNumber=true;$pageSegment = ($this -> uri -> segment(2)) ? $this -> uri -> segment(2) : 1;        if ($pageNumber == true) //sayfa numarasına göre iş yapsın            $pkCount = ($pageSegment - 1) * $perPage;        else            $pkCount = $pageSegment - 1;        $links = paginationHelper(base_url('blog'),        $this->main->blogListCount(['blogContent.lang' => $this->page->lang, 'blogContent.showcase' => 1, 'blogContent.isActive' => 1]),        $perPage, 2, pageNumber, ['class' => 'page-link']);$page=['blogLists' => $this->main->blogList(['blogContent.lang' => $this->page->lang,                  'blogContent.showcase' => 1, 'blogContent.isActive' => 1],                     'blogContent.*,blogCategories.sefLink as categoryGroup,blogCategories.categoryName', $perPage, $pkCount),       'recentBlogs' => $this->main->recentBlogs(['blogContent.lang' => $this->page->lang,'blogContent.isActive' => 1],       'blogContent.*,blogCategories.categoryName'),       'pageLinks' => $links]$this->template->content->view('blogList', $page);}

    view dosyasını da artık kendi veri tabanınza göre düzenleyip yayınlamanız gerekir. sadece view de kullanacağınız link için gereken php kodu şu şekilde:

    echo $pageLinks;

     


    Bertuğ Fahri Özer
    Bertuğ Fahri Özer
    super user

    captcha