В настоящее время я показываю список продуктов на странице pyrocms. Используя плагин, я получаю продукты из таблиц БД и отображаю их в виде списка. Я хочу использовать разбиение на страницы, но понятия не имею, как его использовать и с чего начать. Кто-нибудь знает какой-нибудь учебник или есть какие-то предложения?
Пагинация на страницах Pyrocms
Ответы (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();
Вам не нужно будет загружать библиотеку разбивки на страницы или инициализировать ее. Это немного отличается от того, что вы делаете в обычном 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'];?>
Я использую это в своих работах, надеюсь, это поможет.