2

わかりました、私は過去1時間これにいました、そして私の人生のためにこれを理解することはできません。ページ数が正しくなっています。今は2ページあるはずです。現在5に制限しており、7つの結果があります。ただし、2ページをクリックすると、他の2つの投稿が表示されません。現在、私のフォーラムのURLは次のようになっています:forum / category / 2(フォーラムコントローラー、カテゴリメソッド、カテゴリIDの2)ページは次のようになります:ページ1とフォーラムのforum / category / 2/1 / category / 2/2(2ページ目など)。ただし、2ページ目ではこれをURLとして提供しています。

forum / category / 5...どのカテゴリID5にトピックが含まれていませんが、カテゴリID2の2ページ目につながるはずです。わかりません...ページごとに5つしか表示されないので、5つ表示される可能性がありますか?それがどのように機能するかはわかりませんが、次のコードがあります:

public function category($id, $page = NULL) {
    //grab topics
    parent::before();
    $data['forum_title'] = $this->forum->get_cat($id);
    $data['id'] = $id;

    $config = array();
    $config['base_url'] = base_url() . 'forum/category/';
    $config['total_rows'] = $this->forum->topic_count($id);
    $config['per_page'] = 5;
    $config['uri_segment'] = 4;

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

    $page = ($this->uri->segment($config['uri_segment'])) ? $this->uri->segment($config['uri_segment']) : 0;
    $data['topics_array'] = $this->forum->get_topics($id, $config['per_page'], $page);

    $data['links'] = $this->pagination->create_links();
    $this->load->view('forum/category', $data);
    parent::after();
}

そのコントローラーで使用される私の関数は次のとおりです。

//count the topics in a certain category id for pagination
public function topic_count($id) {
    $this->db->where('cat_id', $id);
    $this->db->from('forum_topic');

    return $this->db->count_all_results();

}
//get all topics in a certain category
public function get_topics($id, $limit, $start) {
    $this->db->distinct();
    $this->db->select('t.id, t.title, t.sticky, t.locked, u.username as author, COUNT(p.id) as postcount, (SELECT u.username
        FROM forum_post fp
        INNER JOIN user u ON fp.author_id = u.user_id
        WHERE fp.topic_id = t.id
        ORDER BY fp.date DESC
        LIMIT 1) as lposter, (SELECT fp.date
        FROM forum_post fp
        WHERE fp.topic_id = t.id
        ORDER BY fp.date DESC
        LIMIT 1) as lastdate');
    $this->db->from('forum_topic t');
    $this->db->join('user u', 'u.user_id = t.author_id', 'inner');
    $this->db->join('forum_post p', 'p.topic_id = t.id', 'inner');
    $this->db->where('t.cat_id', $id);
    $this->db->group_by('t.id, t.title, t.sticky, t.locked, author, lposter, lastdate');
    $this->db->order_by('t.sticky desc, p.date desc');
    $this->db->limit($limit, $start);
    return $this->db->get()->result();
}
4

1 に答える 1

0

$config['uri_segment']リンクを生成するためではなく、現在のページを決定するために CI によって使用されます。

これを試して:

$config['base_url'] = site_url('forum/category/' . $id);
于 2013-01-12T20:37:37.907 に答える