function html_pagebar()

ЕСТЬ РЕШЕНИЕ InstantCMS 2.X
#1 15 сентября 2023 в 22:11

При переходе с одной страницы с подарками на другую, теряется ID получателя подарка.

Хотелось бы в ближайшей версии CMS видеть функцию html_pagebar() приблизительно такой:

  1. function html_pagebar($page, $perpage, $total, $base_uri = false, $query = [], $page_param_name = 'page') {
  2.  
  3. if (!$total || $total <= $perpage){ return ''; }
  4. if($base_uri) { $base_uri = ($pos=strpos($_SERVER['REQUEST_URI'], '?')) ? mb_substr($_SERVER['REQUEST_URI'], 0, $pos) : $_SERVER['REQUEST_URI']; }
  5. $paginator = new cmsPaginator($total, $perpage, $page, $base_uri, $query);
  6.  
  7. if($page_param_name){
  8. $paginator->setPageParamName($page_param_name);
  9. }
  10. return $paginator->getRendered();
  11. }

Устал уже с каждым обновлением менять ее :)

#2 15 сентября 2023 в 22:17

Хотелось бы в ближайшей версии CMS видеть функцию html_pagebar() приблизительно такой

vladimir6333

Плохая идея.

При переходе с одной страницы с подарками на другую, теряется ID получателя подарка.

vladimir6333

Вы что-то делаете не так, полагаю. Параметрические ссылки с пагинацией прекрасно работают, см. типы контента, пример и код.

#3 16 сентября 2023 в 00:10

Возможно. Спасибо за пример.

А как получить $filter_query?

Так ничего не выводит: $filter_query = cmsCore::getController('content')->getActiveFiltersQuery();

Вот экшен подарков:

  1. <?php
  2.  
  3. class actionGiftsIndex extends cmsAction {
  4.  
  5. public function run($cat_id = false, $recipient = false){
  6.  
  7. $page = $this->cms_core->request->get('page', 1);
  8. $perpage = (empty($this->options['perpage']) ? 15 : $this->options['perpage']);
  9.  
  10. if ($cat_id){
  11. $this->model->filterEqual('i.cat_id', $cat_id);
  12. }
  13.  
  14. $total = $this->model->
  15. limitPage($page, $perpage)->
  16. getDataCount('gifts', false);
  17.  
  18. $items = $this->model->getData('gifts');
  19.  
  20. $cats = $this->model->getData('gifts_cats');
  21.  
  22. if ($recipient){
  23. $recipient = $this->model_users->getUser($recipient);
  24. if ($recipient){
  25. $this->cms_template->setPageTitle(LANG_GIFTS_FOR . $recipient['nickname']);
  26. $this->cms_template->setPageH1('<h1>' . LANG_GIFTS_FOR . $recipient['nickname'] . '</h1>');
  27. $this->cms_template->addBreadcrumb(LANG_GIFTS_FOR . $recipient['nickname']);
  28. }
  29. } else {
  30. $title = LANG_GIFTS_CONTROLLER;
  31. if (!empty($cats[$cat_id])){
  32. $title = $cats[$cat_id]['title'];
  33. }
  34. $this->cms_template->setPageTitle($title);
  35. $this->cms_template->setPageH1('<h1>' . $title . '</h1>');
  36. $this->cms_template->addBreadcrumb($title);
  37. }
  38. // Активный фильтры из GET параметров
  39. $filter_query = cmsCore::getController('content')->getActiveFiltersQuery();
  40. //parse_str($filter_query, $filter_active);
  41. print_r($filter_query.'==============');
  42. return $this->cms_template->render('main', array(
  43. 'total' => $total,
  44. 'items' => $items,
  45. 'cats' => $cats,
  46. 'cat_id' => $cat_id,
  47. 'recipient' => $recipient,
  48. 'page' => $page,
  49. 'perpage' => $perpage,
  50. 'filter_query' => $filter_active,
  51. 'page_url' => href_to($this->name, 'index'),
  52. ));
  53.  
  54. }
  55.  
  56. }

Проблема решена.

#4 16 сентября 2023 в 13:15

А как получить $filter_query?

vladimir6333

Зачем его получать? Передавайте в массив то, что вы хотите.

Так ничего не выводит: $filter_query = cmsCore::getController('content')->getActiveFiltersQuery();

vladimir6333

И не должно, при чём тут ваш контроллер и контроллер контент.

Проблема решена.

vladimir6333

Как?

Ну и старайтесь код на форуме выкладывать, используя соответствующую кнопку редактора (ваши сообщения отредактированы).

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