[pmwiki-users] Paging in pagelists
DaveG
pmwiki at solidgone.com
Fri Jan 23 18:49:52 CST 2009
Here's what I've done for Blogger. I include a section after the
pagelist which adds a link for previous/next, and includes a "page"
parameter:
(:div class="page-navigation":)(:if !equal "{$Blogger_PagePrev}"
"":)%previous-entries%[[{*$FullName}?page={$Blogger_PagePrev} | $[newer
posts]]](:ifend:)\
(:if equal "{earlymx(lt "{$$PageCount}" "{$Blogger_EntriesPerPage}")}"
"false":)%next-entries%[[{*$FullName}?page={$Blogger_PageNext} | $[older
posts]]](:ifend:)
(:divend:)
And in config.php (or in my case, blogger.php) I add the calculations
for the previous and next links, based on the paramater set from the
links above:
$Blogger_EntriesPerPage = 8;
$FmtPV['$Blogger_PageNext'] =
(isset($_GET['page']) ? $_GET['page']+1 : 2);
$FmtPV['$Blogger_PagePrev'] =
(isset($_GET['page']) && ($_GET['page']>0) ? $_GET['page']-1 : 0);
$FmtPV['$Blogger_EntryStart'] =
(($FmtPV['$Blogger_PageNext']-2) * $Blogger_EntriesPerPage) + 1;
$FmtPV['$Blogger_EntryEnd'] =
$FmtPV['$Blogger_EntryStart'] + $Blogger_EntriesPerPage - 1;
In order to access {$$PageCount}, you'll need a markup which processes
markup expressions earlier in the processing loop:
Markup('{earlymx(', '>{$var}', '/\\{earlymx(\\(\\w+\\b.*?\\))\\}/e',
"MarkupExpression(\$pagename, PSS('$1'))");
And next, a markup expression to calculate 'less than':
$MarkupExpr['lt'] = '($args[0]<$args[1]?"true":"false")';
This only shows a previous link, if we're not at the start, and only
shows the next link if we've filled the page with the maximum number of
entries.
Note, that this will show an 'older posts' link we're on the last page,
but the number of entries on the page equals EntriesPerPage. I don't see
a way past this right now, so the user will see an empty page when
clicking 'older posts' in this case. Adding a (:template none:) markup
will help in this case.
I pretty much ripped this out of Blogger, and haven't tested it
stand-alone, but it should work.
~ ~ Dave
pmwiki at 911networks.com wrote:
> Hi,
>
> I have searched the mailing list and have not found an answer. I'm
> looking for a way of paging a pagelist:
>
> I'm using:
>
> (:pagelist group=-Site*,-PmWiki*,-Main* fmt=#lnews count=15 order=-time:)
>
> #lnews is defined to display the first 4 lines of the pages.
>
> I'd like to page the whole list paged 15 entries at a time, so at the
> bottom of the page there would be next 15 entries, previous 15
> entries.
>
> Any suggestion?
>
More information about the pmwiki-users
mailing list