Denemedim ama mantık olarak yazdım çalışacaktır inşaAllah. Yapmak istediğin sayfalamaysa eğer

function blok_haber($haber_kat,$sayfa=1,$limit=10)
    {    
        $total_page = $ci->db->select('id')->from('haberler')->where('kategori',$kaber_kat)->where('durum','1')->get()->num_rows();
        
        $page = isset($sayfa) ? (int) $sayfa : 1;
        if($page < 1) $page = 1;        
        if($page > $total_page) $page = $total_page;         
        $limit = ($page - 1) * $limit;
        
        $ci    =& get_instance();
        $sonuc = $ci->db->select('id, kategori, tarih, baslik, resim, durum')->from('haberler')
            ->where('kategori',$kaber_kat)->order_by('tarih','desc')->limit($limit.','.$page)
            ->where('durum','1')
            ->get()->result_array();
            
        return $sonuc['result'=>$sonuc,'total_page'=>$total_page];
    }
    
    $haber_kat      = $veri['haber_katid'];
    $page           = ($_GET['page']) ? $_GET['page'] : 1;
    $blokahaberleri = blok_haber($haber_kat,$page); 
    $blokahaberleri = $blokahaberleri['result'];
    $toplam_sayfa   = $blokahaberleri['total_page'];
    
    foreach ($blokahaberleri as $veri_haber) 
    {
        
    }
    
    for($s = 1; $s <= $toplam_sayfa; $s++) {
       if($sayfa == $s) { 
          echo $s . ' '; 
       } else {
          echo '<a href="?page=' . $s . '">' . $s . '</a> ';
       }
    }