XF 1.5 Пагинация (Pagination) в Xenforo

Статус
В этой теме нельзя размещать новые ответы.

xsacha

Только чтение
Сообщения
1,262
Реакции
1,383
Баллы
5,850
Подскажите как сделать рабочий вариант, бьюсь уже второй день, вроде не сложно но не получается вывести ее в шаблон, делаю так:
PHP:
        $thingsPerPage = XenForo_Application::get('options')->thingsPerPage;
        $page = max(1, $this->_input->filterSingle('page', XenForo_Input::UINT));
        $things = $this->_getIceShopProductModel()->getThings(array('perPage' => $thingsPerPage, 'page' => $page));
        $totalThings = $this->_getIceShopProductModel()->getThingsCount();
Соответственно делаю пункт в настройках с названием (thingsPerPage) указываю там значение 2 записей всего 3.
В модели пишут так:
PHP:
    public function getThingsCount()
    {
        return $this->_getDb()->fetchOne('
            SELECT COUNT(*)
            FROM xf_ice_shop_products');
    }
  
    public function getThings(array $fetchOptions)
    {
    $limitOptions = $this->prepareLimitFetchOptions($fetchOptions);

    return $this->_getDb()->fetchAll($this->limitQueryResults('
        SELECT *
        FROM xf_ice_shop_products
        ORDER BY product_id DESC
        ', $limitOptions['limit'], $limitOptions['offset']
    ));
    }
В шаблоне вывожу так:
PHP:
<xen:pagenav link="things" page="{$page}" perpage="{$thingsPerPage}" total="{$totalThings}" />

Пагинация не появляется в шаблоне хотя запросы проходят и выводят общие количество записей и ограниченное лимитом. Что я упустил .
 

Вложения

  • 542543435.jpg
    542543435.jpg
    70.2 KB · Просмотры: 19
Последнее редактирование:
.функция prepareLimitFetchOptions есть в модели?
Нет все что есть из кода выложил тут, а как ее написать чтобы все заработало ? Или может без нее просто жестко прописать количество страниц например 10 и все ? Прописал так, чтобы проверить работу все равно не работает:
PHP:
        $thingsPerPage = 2;
        $page = max(1, $this->_input->filterSingle('page', XenForo_Input::UINT));
        $things = $this->_getIceShopProductModel()->getThings(array('perPage' => $thingsPerPage, 'page' => $page));
        $totalThings = $this->_getIceShopProductModel()->getThingsCount();

Модель:
PHP:
    public function getThingsCount()
    {
        return $this->_getDb()->fetchOne('
            SELECT COUNT(*)
            FROM xf_ice_shop_products');
    }
  
    public function getThings()
    {
      

    return $this->_getDb()->fetchAll('
        SELECT *
        FROM xf_ice_shop_products
        ORDER BY product_id DESC
        limit 2');
    }
 
Последнее редактирование:
Дописал в модель, но ситуация не изменилась, пагинация так и не выводится, модель стала такая:
PHP:
    public function getThingsCount()
    {
        return $this->_getDb()->fetchOne('
            SELECT COUNT(*)
            FROM xf_ice_shop_products');
    }
    
    public function getThings(array $fetchOptions)
    {
        
    $limitOptions = $this->prepareLimitFetchOptions($fetchOptions);

        return $this->_getDb()->fetchAll($this->limitQueryResults('
            SELECT *
            FROM xf_ice_shop_products
            ORDER BY product_id DESC
            ', $limitOptions['limit'], $limitOptions['offset']
        ));
    }
    
    public function prepareLimitFetchOptions(array $fetchOptions = array())
    {
        $offset = ($fetchOptions['page'] - 1) * $fetchOptions['perPage'];
        $limit = $fetchOptions['perPage'];
        return array(
            'offset' => $offset,
            'limit' => $limit
            );
    }
 
Статус
В этой теме нельзя размещать новые ответы.
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу