Skip to main content

This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.

Customising the CMS

Pagination for Multiple Page Types


Reply

4 Posts   2727 Views

Avatar
svinkle

19 February 2009 at 5:15pm (Last edited: 19 February 2009 5:19pm), Community Member, 16 Posts

Hi all,

I'm attempting to output some pagination for more than one page type. My function gets all the data as expected, but ".MoreThanOnePage" returns false. I followed the [url=http://doc.silverstripe.org/doku.php?id=private:recipes:paginationguide in the wiki[/url] and it works for one page type, but not in this instance.

Here's what I have in my page controller:

function LatestNews($pageLimit=2) {

if(!isset($_GET['start']) || !is_numeric($_GET['start']) || (int)$_GET['start'] < 1) $_GET['start'] = 0;

$SQL_start = (int)$_GET['start'];

$articles = DataObject::get("Page", "`ClassName` IN ('DocPage', 'TechDocPage')");

$returnarticles = $articles->getRange($SQL_start, $pageLimit);

return $returnarticles;
}

And in my template I have the controller returning the page data as it should, but there is never any output for the pagination:

<% control LatestNews %>
<p>$DateAdded.Format(j F Y)</p>
<p>$Content.FirstParagraph</p>
<% end_control %>
.
.
.
<% if LatestNews.MoreThanOnePage %>
<% if LatestNews.PrevLink %>
<a href="$LatestNews.PrevLink">&lt;&lt; Prev</a> |
<% end_if %>

<% control LatestNews.Pages %>
<% if CurrentBool %>
<strong>$PageNum</strong>
<% else %>
<a href="$Link" title="Go to page $PageNum">$PageNum</a>
<% end_if %>
<% end_control %>

<% if LatestNews.NextLink %>
| <a href="$LatestNews.NextLink">Next &gt;&gt;</a>
<% end_if %>
<% end_if %>

I must be missing something in my data object call?

Avatar
splatEric

27 April 2010 at 5:14am Community Member, 15 Posts

I am having a similar problem - did you have any luck resolving?

Avatar
Pigeon

27 April 2010 at 10:30am Community Member, 243 Posts

If you follow the pagination recipe, it is fairly straight forward, the SQL_Limit needs to go in the DataObject::get(), rather than getRange once you pull all of the pages out.

http://doc.silverstripe.org/private:recipes:pagination

Avatar
splatEric

27 April 2010 at 8:07pm Community Member, 15 Posts

I was being a moron; hadn't updated my template page properly!! So I wasn't having a similar problem at all!