T.M. SoftStudio

feci quod potui, faciant meliora potentes

Vosao CMS: Улучшаем Velosity Pagination

При первоначальной установке Vosao CMS на главной странице сайта отображаются аннотации статей блога, организованные в подстраницы с помощью Velosity-кода:

## Posts number on page

#set ($count = 5)

#set ($pageNum = 0)

#set ($pageParam = $request.getParameter("page"))

#if ($pageParam)

#set($pageNum = $math.toInteger($pageParam))

#end

#set ($start = $pageNum * $count)

#set ($pages = ${service.findPageChildren("/blog", $start, $count)})

#set ($nextPage = $pageNum + 1)

#set ($prevPage = $pageNum - 1)

#foreach ($p in $pages)

${service.renderStructureContent($p.friendlyURL, "article-overview")}

#end

<div class="navigation clear">

#if ($pages.size() == $count)

<div><a href="/articles?page=${nextPage}">« Older Entries</a></div>

#end

#if ($start > 0)

<div><a href="/articles?page=${prevPage}">Newer Entries » </a></div>

#end

</div>

При этом не видно сколько всего подстраниц существует, и какая подстраница в данный момент открыта (хотя это можно посмотреть в строке запроса).

Для улучшения внешнего вида ссылок перехода на подстраницы главной страницы сайта можно применить следующий Velosity-код:

## Posts number on page

#set ($count = 5)

#set ($pageNum = 0)

#set ($pageParam = $request.getParameter("page"))

#if ($pageParam)

#set($pageNum = $math.toInteger($pageParam))

#end

#set ($start = $pageNum * $count)

#set ($pages = ${service.findPageChildren("/blog", $start, $count)})

#set ($nextPage = $pageNum + 1)

#set ($prevPage = $pageNum - 1)

#foreach ($p in $pages)

${service.renderStructureContent($p.friendlyURL, "article-overview")}

#end

#set($i=0)

#foreach($p in $service.findPageChildren("/blog") )

#set($i=$i+1)

#end

#set($pageC=$i/$count)

<div class="navigation clear">

#if ($start > 0)

<div><a href="/?page=${prevPage}">&lt;&lt;</a></div>

#end

#foreach($c in [0..$pageC])

<a href="/?page=${c}">$c</a>

#end

#if ($pages.size() == $count)

<div><a href="/?page=${nextPage}">&gt;&gt;</a></div>

#end

</div>

Теперь страничная организация будет выглядеть следующим образом: