1

Тема: Создание модуля

Вот решил глянуть как работают модули в cms и сразу же возник вопрос, как вывести скажем контент с пагинацией в модуле.


    public function index()
    {
 
        //Генерация запроса к БД.
        //$this->db->limit(1);
        //$this->db->where('id', 1);
        $query = $this->db->get('users');
       
       $users = $query->result_array();
       

        foreach($users as $user) {
            
            // Если полный текст страницы отсутствует
            // выводим предварительный текст.
            
            $page['full_text'] = $user['id'];
 
 
            // Если не указан шаблон страницы
            // то используем шаблон page_static
            if ($page['full_tpl'] == NULL)
            {
                $page['full_tpl'] = 'page_full_text';
            }
             // Читаем шаблон страницы в переменную {$content}
            // и выводим main.tpl
            $this->template->assign('page', $page);
            $this->template->show($page['full_tpl']);
        }



    }


К примеру задача вывести на экран всех пользователей с пагинацией. Есть шаблон users.tpl.
Если использовать данный код, то на экран выводится главная страница ровно столько раз, сколько и пользователей в базе. Подскажите пожалуйста, как сделать, что бы выводились все пользователи с пагинацией.

Thumbs up Thumbs down

2

Re: Создание модуля

неудивительно... страсти какие... Вы не пугайте такими вещами...

в файл модуля вставляем код ("имя_модуля" заменить)

public function all_users($page = 0)
    {


        if (!is_numeric($page)){$page=0;}
        $results=20;

        $total = $this->db->
                from('users')->
                count_all_results();
        
        if ($total > $results)
             {
             $this->load->library('Pagination');
                
                $config=array(
                'base_url'    => site_url('имя_модуля/all_users/'),
                'total_rows'  => $total,
                'per_page'    => $results,
                'uri_segment' => $this->uri->total_segments(),
                'first_link' => 'Первая',
                'last_link'=>'Последняя',
                'anchor_class'=>'paginator',                
                'num_links'=>'10'

                );
                $this->pagination->initialize($config);
                $this->template->assign('pagination', $this->pagination->create_links());
             }
        $users = $this->db->
                select('username')->
                limit($results,$page)->
                order_by('id','asc')->
                get('users')->
                result_array();
        
        $this->template->assign('users', $users);
        $this->template->display('user_list');
        }

создаем в каталоге Вашего шаблона (обычно /templates/default/)
файл user_list.tpl с текстом

{if count($users) > 0}
{$pagination}
<ul>
    {foreach $users as $v}
    <li>{$v['username']}</li>
    {/foreach}
</ul>
{else:}
<div>0_о Нет пользователей</div>
{/if}

открыть в строке браузера адрес

http://Ваш_сайт/Ваш_модуль/all_users

и радуемся... если выводит 404 тогда в админке включите модулю доступ по  URL.

Thumbs up Thumbs down

3

Re: Создание модуля

разобрался, но возник вопрос, если function index

    // Index function
    public function index($page = 0)
    {
       

http://Ваш_сайт/Ваш_модуль/

но счетчик страниц page будет работать только при http://Ваш_сайт/Ваш_модуль/index/20

Это как то фиксится ?
то в таком случае мы можем зайти по адресу

Thumbs up Thumbs down

4

Re: Создание модуля

Незнаю умеет ли пагинатор передавать запросы POST
но точно знаю что можно выкрутиться Get запросами
проверять данный код не стал-некогда  но напишу его, сами потестите.

конфиг пагинатора при инициализации и обработка входных параметров.

function index()
{
if (!is_numeric($_GET['page']) or $_GET['page'] < 1)
{$page=0;}
else
{$page=$_GET['page'];}
..............
'base_url'    => site_url('имя_модуля/?page='),
.............

Как видите адресок получится довольно корректный)

http://Ваш_сайт/Ваш_модуль/?page=20

Thumbs up +1 Thumbs down

5

Re: Создание модуля

спасибо. все просто.

Thumbs up Thumbs down