Виджет контента $limit не срабатываетк как надо

#1 3 марта 2017 в 14:45
  1. $items = $model->limit($limit)->getContentItems($ctype['name']);
такая модель вызывается, в самой модели контента модели limit нет.

Я так понимаю тогда берется модель из ядра, раз идет наследие.

так вот в ядре есть функция

  1.  
  2. public function limit($from, $howmany=0) {
  3. $this->limit = (int)$from;
  4. $howmany = (int)$howmany;
  5. if ($this->limit < 0) { $this->limit = 0; }
  6. if ($howmany){
  7. if ($howmany <= 0){ $howmany = 15; }
  8. $this->limit .= ', '. $howmany;
  9. }
  10. return $this;
  11. }
  12.  
  13.  
  14.  
т.е. должна передаваться переменная с какой записи выводить, а потом уже сколько выводить.

но самое смешное что в виджете
  1. $limit = $this->getOption('limit', 10);
т.е. лимит это сколько сразу выводить.

Т.е. функция не правильно сделана или почему переменная странно обрабатывается.

А задача простая в виджетах хочу указать с какого id выводить запись и сколько выводить.
#2 3 марта 2017 в 14:52

Т.е. функция не правильно сделана или почему переменная странно обрабатывается.

kirkr

Какие смелые заявления, может руки у кого-то кудрявые.


А задача простая в виджетах хочу указать с какого id выводить запись и сколько выводить.

kirkr

Код полностью предоставьте!
#3 3 марта 2017 в 15:09

Какие смелые заявления, может руки у кого-то кудрявые.

Вадим Нарочный
Может стоить прочитать лучше сударь?

Код полностью предоставьте!

Вадим Нарочный

что его представлять, в виджете формы создаем

  1. new fieldNumber('options:number', array(
  2. 'title' => LANG_WD_CONTENT_SLIDER_NUMBER,
  3. 'hint' => LANG_WD_CONTENT_SLIDER_FROM_NUMBER,
  4. 'default' => 1,
  5. 'units' => LANG_FROMID
  6. )),
  7.  
В модуле виджета добавляем определение дефолтное
  1. $number = $this->getOption('number', 1);
а в items
передать по логике надо
  1.  
  2. $items = $model->limit($number, $limit)->getContentItems($ctype['name']);
#4 3 марта 2017 в 15:18
kirkr, в общем то да, прежде чем винить движок, нужно разобраться как работает.
Первый параметр в limit это с какой записи выводить, второй — сколько. При этом, если передан только первый параметр, то он означает кол-во записей для вывода.

передать по логике надо

kirkr
По логике в виджете нет разделения на страницы, поэтому

  1. $model->limit($this->getOption('number', 1));
Если number это кол-во записей.

  1. $model->limit($this->getOption('number', 1), $this->getOption('perpage', 1));
Если number это смещение, а perpage количество.

Поэтому по сабжу ответ один: срабатывает как надо, не верно делаете.
#5 3 марта 2017 в 18:54
Все разобрался.
  1. $number = $this->getOption('number', 1);
так как массив с 0 то надо
  1. $number = $this->getOption('number', 0);
и не забыть про сортировку.

А задача простая в виджетах хочу указать с какого id выводить запись и сколько выводить.

kirkr
для этой задачи добавлять фильтр иначе никак
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.