0 Пользователей и 1 Гость просматривают эту тему.
  • 8 Ответов
  • 592 Просмотров
*

Vicos

  • Осваиваюсь на форуме
  • 60
  • 0
Добрый день!
Подскажите пожалуйста как переопределить количество выводимых постов на странице? Над выводимыми постами будет форма с select -> 20, 40, 60 к примеру. Выбираем страница обновляется и получаем количество нам необходимое.
Компонент самописный.
Изначально задаётся количесвтво в моделе функцией:
Код
public function populateState( $ordering = null, $direction = null )
{
parent::populateState( $ordering, $direction );
$input = JFactory::getApplication()->input;
$params = JComponentHelper::getParams( 'com_sclad' );
$this->setState( 'list.start', $input->get( 'start' ) );
$this->setState( 'list.limit', $params->get( 'limit', 20 ) );
}
Эта
Код
$this->setState( 'list.limit', $params->get( 'limit', 20 ) );
строчка и определяет изначально сколько вывести.
В шаблоне вывода пагинация выводится
Код
<?php echo $this->pagination->getPagesLinks(); ?>
Пробовал изменять и смотрел var_dump($this).
Вроде как выводится в
Код
protected 'query' => 
            object(JDatabaseQueryMysqli)[270]
              protected 'offset' => int 0
              protected 'limit' => int 11
              protected 'db' =>
Даллее формируется запрос.
Как получить доступ к этому значению не пойму.
*

zomby6888

  • Живу я здесь
  • 1484
  • 167
$this->pagination->getLimitBox(); выводит селект с лимитами

Текущее значение берется из сессии или запроса:
Код: php
$limit = $app->getUserStateFromRequest('global.list.limit', 'limit', $app->get('list_limit'), 'uint');
« Последнее редактирование: 07.04.2015, 16:46:16 от zomby6888 »
интернет-блог: http://websiteprog.ru
*

b2z

  • Support Team
  • 7464
  • 742
  • Разраблю понемногу
А я сначала подумал, что нужно сделать кастомный getLimitBox(). Но, похоже что ТС просто не знал, что в принципе есть getLimitBox() ;)
*

zomby6888

  • Живу я здесь
  • 1484
  • 167
В большинстве случаев может и лучше кастомный написать. Например чтобы изменить шаг в лимитах(+5 по умолчанию)
интернет-блог: http://websiteprog.ru
*

Vicos

  • Осваиваюсь на форуме
  • 60
  • 0
Вот это значение:
Код
$limit = $app->getUserStateFromRequest('global.list.limit', 'limit', $app->get('list_limit'), 'uint');
Изначально не то что берётся в функции компонента, т.е. Выводится 20, $limit - 15.
При getLimitBox() форма отрабатывает, значение меняется, но количество не выведенных постов не изменяется.
Может проблема моя в том что
Код
$this->setState( 'list.limit', $params->get( 'limit', 20 ) );
Значение вбито напрямую?
« Последнее редактирование: 07.04.2015, 18:44:20 от Vicos »
*

AlekVolsk

  • Профи
  • 6310
  • 336
Может проблема моя в том что
Код
$this->setState( 'list.limit', $params->get( 'limit', 20 ) );
Значение вбито напрямую?
Да, именно в этом. Сюда лучше подставлять значение, взятое из системных настроек
*

zomby6888

  • Живу я здесь
  • 1484
  • 167
Лучше вобще убрать эту строку иначе всегда оно будет такое, какое в настройках и не будет менятся. Родительский populate state сам получит нужное значение и установит.
интернет-блог: http://websiteprog.ru
*

Vicos

  • Осваиваюсь на форуме
  • 60
  • 0
Да, именно в этом. Сюда лучше подставлять значение, взятое из системных настроек
Спасибо! Проблема решена.
*

Vicos

  • Осваиваюсь на форуме
  • 60
  • 0
Лучше вобще убрать эту строку иначе всегда оно будет такое, какое в настройках и не будет менятся. Родительский populate state сам получит нужное значение и установит.
Ага, в действительности перегрузка этого метода ни к чему. Ну зато понял как работает пагинация в Joomla.
Спасибо!
« Последнее редактирование: 07.04.2015, 21:11:16 от Vicos »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться