Türkiye'nin en kullanışlı kodcu forumu, en baba kodcular burda !

Yeni özellik: Gönderinize jsfiddle kodu ekleyebilirsiniz.
Bilgi: Bu forum Türkiye'nin en kullanışlı kodcu forumudur. Forum içerisindeki davranış ve paylaşımlarınız moderatörler tarafından izlenmektedir.
 
Kullanıcı avatarı
bertug
Üye
Üye
Mesajlar: 14
Kayıt: 01 Ara 2017, 15:03:30
x 3
İletişim:

Codeigniter Pagination - Sayfalama

17 Eyl 2019, 17:02:33

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:
[php]
$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.
[/php]
Benim kullandığım şekil ve düzen ise şu şekilde:

Model PHP dosyasındaki fonksiyonlarım:
[php]
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');
}[/php]
Helper PHP dosyamda şu şekilde bir yardımcı yazdım:
[php]
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' => "<ul class='pagination'>",
'full_tag_close' => "</ul>",
'num_tag_open' => '<li class=\'page-item\'>',
'num_tag_close' => '</li>',
'cur_tag_open' => "<li class='page-item'><a href='#' class='page-link active'>",
'cur_tag_close' => "</a></li>",
'next_tag_open' => "<li class='page-item'>",
'next_tag_close' => "</li>",
'prev_tag_open' => "<li class='page-item'>",
'prev_tag_close' => "</li>",
'first_tag_open' => "<li class='page-item'>",
'first_tag_close' => "</li>",
'last_tag_open' => "<li class='page-item'>",
'last_tag_close' => "</li>"];

$ci->pagination->initialize($config);
return $ci->pagination->create_links();
}
}[/php]
contoller PHP dosyası:
[php]
public function blog()
{
$perPage = 12
$links = paginationHelper(base_url('blog'),
$this->main->blogListCount(['blogContent.lang' => $this->page->lang, 'blogContent.showcase' => 1, 'blogContent.isActive' => 1]),
$perPage, 2, TRUE, ['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, $pageSegment - 1),
'recentBlogs' => $this->main->recentBlogs(['blogContent.lang' => $this->page->lang,'blogContent.isActive' => 1],
'blogContent.*,blogCategories.categoryName'),
'pageLinks' => $links]

$this->template->content->view('blogList', $page);
}[/php]
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:

[php]echo $pageLinks;[/php]

kaynak : https://bertugfahriozer.com/blogDetail/ ... -sayfalama
0 x
Resim
:20: :21: :11: :12: :3:

Kunduz Yazılım

ben kunduz yazılım freelance çalışan ekip kurucusu bertuğ fahri özer. Sorularınızı cevaplamak ve bilgi paylaşımında bulunmaktan çok memnun kalırım.

Tags:

Kimler çevrimiçi

Bu forumu görüntüleyen kullanıcılar: Hiç bir kayıtlı kullanıcı yok ve 1 misafir