Пагинация на страницах Pyrocms

В настоящее время я показываю список продуктов на странице pyrocms. Используя плагин, я получаю продукты из таблиц БД и отображаю их в виде списка. Я хочу использовать разбиение на страницы, но понятия не имею, как его использовать и с чего начать. Кто-нибудь знает какой-нибудь учебник или есть какие-то предложения?


person Muhammad Raheel    schedule 23.08.2012    source источник
comment
почему вам нужно закодировать это в плагине...??   -  person Pramod Kumar Sharma    schedule 23.08.2012
comment
Это всего лишь CodeIgniter, так что делайте, что хотите! Возьмите информацию из URL-адреса и передайте ее в библиотеку разбивки на страницы, как объясняется в документации CodeIgniter.   -  person Phil Sturgeon    schedule 06.09.2012


Ответы (2)


Pyrocms использовала структуру codeigniter, этот код отлично работает в случае модуля, но я никогда не пробовал это с плагином, но вы все равно можете попробовать это.

Загрузить библиотеку разбивки на страницы в контроллере

$this->load->library('pagination');

$config['base_url'] = 'http://example.com/index.php/test/page/';
$config['total_rows'] = 200;
$config['per_page'] = 20;

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

Используйте этот код для создания ссылок

echo $this->pagination->create_links();
person Pramod Kumar Sharma    schedule 23.08.2012
comment
спасибо за ваш ответ, но контроллер не участвует, просто страница, и плагин - это все, что мне нужно сделать - person Muhammad Raheel; 23.08.2012
comment
Хорошо, тогда поместите этот код в plugin.php и используйте его, и можете ли вы поделиться своим URL-адресом, чтобы я мог лучше понять - person Pramod Kumar Sharma; 23.08.2012
comment
Благодарю. я нашел способ сделать это. создал плагин и два метода для плагина для получения данных и создания ссылок, а затем вызвал его на странице. - person Muhammad Raheel; 27.08.2012

Вам не нужно будет загружать библиотеку разбивки на страницы или инициализировать ее. Это немного отличается от того, что вы делаете в обычном codeigniter, и вы, безусловно, можете использовать то, как вы это делаете в класс разбивки на страницы codeigniter

Я обычно делаю это для пагинации.

в вашем контроллере используйте это

    ....
    // Create pagination links
    $total_rows = $this->products_m->count_all_products();
    $pagination = create_pagination('products/list', $total_rows);
    //notice that product/list is your controller/method you want to see pagination there        

    // Using this data, get the relevant results
    $params = array(
        'limit' => $pagination['limit']
    );
    $this_page_products = $this->product_m->get_all_products($params);
    ....
    //you got to pass $pagination to the view
    $this->template
            ->set('pagination', $pagination)
            ->set('products', $this_page_products)
            ->build('products/view');

очевидно, у вас будет модель с именем products_m. В вашей модели это будет ваша функция get_all_products, я уверен, что вы также можете построить функцию count_all_products()

private function get_all_products($params){
 //your query to get products here
 // use $this->db->limit();

 // Limit the results based on 1 number or 2 (2nd is offset)
        if (isset($params['limit']) && is_array($params['limit']))
                $this->db->limit($params['limit'][0], $params['limit'][1]);
        elseif (isset($params['limit']))
                $this->db->limit($params['limit']);
 //rest of your query and return
}

Теперь в вашем представлении вам нужно foreach в вашей переданной переменной $products и для отображения ссылок на страницы используйте эту строку в вашем представлении

<?php echo $pagination['links'];?>

Я использую это в своих работах, надеюсь, это поможет.

person Alireza    schedule 24.08.2012