Пагинация для компонента в Joomla 3

03.10.2015
Памятка о том, что нужно добавить в компонент, для поддержки постраничного деления.
  1. Модифицируем класс модели class TestModelItems extends JModelList

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    /**
    * Метод для построения SQL запроса для загрузки списка данных.
    *
    * @return  string  SQL запрос.
    */
    protected function getListQuery()
    {
        // Создаем новый query объект.
        $db = JFactory::getDBO();
        $query = $db->getQuery(true);
    
        // Выбераем поля.
        $query->select('*')
            ->from('real_so_blog_items')
            ->where('published = 1')
            ->order($this->getState('list.ordering', 'ordering')); // DESC
        ;
    
        return $query;
    }
    
    
    /**
    * Method to auto-populate the model state.
    *
    * Note. Calling getState in this method will result in recursion.
    *
    * @since   1.6
    */
    protected function populateState($ordering = null, $direction = null)
    {
        // Вытаскиваем настройки копонента
        $params = JComponentHelper::getParams('com_soblog');
    
        $limit = $params->get('onPage');
        $limit = $limit?$limit:10;
        echo '$limit: '.$limit.'<br />';
    
        $limitstart = JFactory::getApplication()->input->getVar('limitstart', 0);
        echo '$limitstart: '.$limitstart.'<br />';
    
        $this->setState('list.start', $limitstart);
        $this->setState('list.limit', $limit);
    }

  2. В классе представления (class TestViewItems extends JViewLegacy), в методе display, добавляем:

    $this->pagination = $this->get('Pagination');

  3. В самом представлении, в нужном месте выводим

    <?=$this->pagination->getListFooter();?> 


Категории: CMS Joomla 3.X, Joomla
Яндекс.Метрика