Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”
Пагинация при выводе данных через usel

Автор AxiomateriaРаздел Шаблоны XSLT

Ответов: 9
Просмотров: 6371
Последний ответ 18 Декабря 2013, 23:48:27
от Axiomateria
Пагинация постов блога

Автор niakrissРаздел Шаблоны XSLT

Ответов: 12
Просмотров: 6249
Последний ответ 20 Ноября 2012, 09:17:38
от niakriss
Пагинация в объекте каталога

Автор AxiomateriaРаздел Шаблоны XSLT

Ответов: 9
Просмотров: 4703
Последний ответ 10 Ноября 2014, 09:46:41
от Axiomateria
Пагинация страниц каталога с 1

Автор 0xDEFACEРаздел Настройка системы и модулей

Ответов: 18
Просмотров: 5313
Последний ответ 21 Апреля 2016, 13:11:29
от aghigay
пагинация без перезагрузки

Автор niakrissРаздел Шаблоны XSLT

Ответов: 6
Просмотров: 4987
Последний ответ 14 Января 2013, 16:48:18
от niakriss

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

*

guest

  • *
  • 11
  • +0/-0
    • Просмотр профиля
Длинная пагинация
« : 29 Января 2013, 11:14:55 »
Добрый день.
На сайте реализована новостная лента, а которой ОЧЕНЬ много новостей. Это привело к тому, что количество страниц уже превышает 60 штук, при условии, что на страницу выводиться по 20 новостей.
Хочется реализовать в рамках UMI распростронённый метод пагинации с точками (сокращениями):
1 2 3 ... 58 59 60

Не подскажете - как?
Может уже кто-нибудь реализовывал это? Поделитесь..

Спасибо.
Роман

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Длинная пагинация
« Ответ #1 : 29 Января 2013, 15:51:00 »
какой шаблонизатор? что уже пробовали сделать? что получилось\не получилось?

или вопрос в том, что было бы не плохо подкинуть вам готовую верстку? ;)

*

guest

  • *
  • 11
  • +0/-0
    • Просмотр профиля
Re:Длинная пагинация
« Ответ #2 : 29 Января 2013, 16:14:52 »
Использую tpl, так как изначально на нём был сайт реализован.
Искал по форумам - нашёл вариант с использованием jquery (http://slyweb.ru/jquery/jpaginate/), но это не то, хотя и близко к тому, что нужно.
Пытался также использовать и %cut% - не получилось.

Если добродушных вариантов нету, готов денежку заплатить за это.
В любом случае - здесь распишу вариант реализации этой пагинации.

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Длинная пагинация
« Ответ #3 : 29 Января 2013, 16:29:20 »
возможно ваш вопрос был в том, какими макросами\способами добиться такого результат?

Если так, то вам подойдет макрос system numpages() поищите его в документации umi http://dev.docs.umi-cms.ru/ он как раз и выводит пагинация для постраничного перехода при выводе части большого списка (в том числе и новостей)

*

guest

  • *
  • 11
  • +0/-0
    • Просмотр профиля
Re:Длинная пагинация
« Ответ #4 : 29 Января 2013, 19:23:39 »
Быть может я не достаточно точно изучил system numpages(), но этот макрос, насколько я понял, выводит весь список страниц сразу, либо грубо обрезает его в зависимости от настроек.
ТО есть, если у меня 10 страниц с новостями, то system numpages() делает одно из двух (цифры, это ссылки на страницы):
- либо так: 1 2 3 4 5 6 7 8 9 10 (полный вывод страниц)
- либо так: 1 2 3 4 5 (обрезанный вывод страниц)

А мне нужно, что бы выглядело так:
1 2 3 ... 8 9 10

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Длинная пагинация
« Ответ #5 : 29 Января 2013, 22:55:51 »
он может и так как нужно вам, ну почти, но вот так 1 2 3 4 5...10 он точно может

*

guest

  • *
  • 11
  • +0/-0
    • Просмотр профиля
Re:Длинная пагинация
« Ответ #6 : 31 Января 2013, 01:52:48 »
Такс...
Тогда я не понимаю как такое реализовать в рамках system numpages()
Не подскажете?

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Длинная пагинация
« Ответ #7 : 31 Января 2013, 02:01:01 »
если заглянуть в описание данного макроса http://dev.docs.umi-cms.ru/spravochnik_makrosov_umicms/virtualnyj_modul_system/system_numpages/

то мы увидим что в блоке pages_block мы можем вывести ссылку на первую\последнюю страницу, предыдущую\последующую страницу, плюс номера страниц в количестве 5 штук относительно текущей страницы.

То есть, если нам надо вывести пагинацию вида 1...4 5 6 7 8...11
,то в блоке pages_block мы запишем что-то вроде вот этого...
%tobegin% %pages% %toend%

чтобы появились точки от ссылки первая страница и ссылки последняя страница, мы в блоках (pages_tobegin, pages_toend), по которым выводятся эти ссылки проставим троеточие в нужных местах.

поиграйте с шаблоном, поглядывая в описание данного макроса и вам станет понятней что в нем можно сделать.

*

guest

  • *
  • 11
  • +0/-0
    • Просмотр профиля
Re:Длинная пагинация
« Ответ #8 : 31 Января 2013, 08:16:43 »
Огромное спасибо.
В итоге, в блоках макроса написАл следующее:

$FORMS['pages_block'] = <<<END
<div>%tobegin% %pages% %toend%</div>
END;

$FORMS['pages_tobegin'] = <<<END
<a href="%tobegin_link%" id="tobegin">на первую страницу</a> ...
END;

$FORMS['pages_toend'] = <<<END
... <a href="%toend_link%" id="toend">на последнюю страницу</a>
END;

И не смотря на то, что циферки по краям (то есть вместо слов "на первую страницу" и "на последнюю страницу") сделать не получилось - всё равно круто!

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Длинная пагинация
« Ответ #9 : 31 Января 2013, 10:30:56 »
хм, действительно в коде явно видно, что номер страницы для блоков "pages_tobegin" и "pages_toend" передается только если вы работаете с xslt шаблоном

if($isXslt) {
$block_arr['toend_link'] = array(
'attribute:page-num' => $pages_count - 1,
'node:value' => $toend_link
);
} else {
$block_arr['toend_link'] = $toend_link;
}

, могу лишь предложить сделать вывод типа
 сделайте свои шаблоны такими
$FORMS['pages_tobegin'] = <<<END
<a href="%tobegin_link%" id="tobegin"> << </a> ...
END;

$FORMS['pages_toend'] = <<<END
... <a href="%toend_link%" id="toend"> >> </a>
END;

но суть это не меняет, номер последней страницы без кастомизации, или без работы с xslt мы не увидим