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   2784 Views

Avatar
svinkle

Community Member, 16 Posts

19 February 2009 at 5:15pm

Edited: 19/02/2009 5:19pm

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

Community Member, 15 Posts

27 April 2010 at 5:14am

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

Avatar
Pigeon

Community Member, 243 Posts

27 April 2010 at 10:30am

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

Community Member, 15 Posts

27 April 2010 at 8:07pm

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