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.

We've moved the forum!

Please use forum.silverstripe.org for any new questions (announcement).
The forum archive will stick around, but will be read only.

You can also use our Slack channel or StackOverflow to ask for help.
Check out our community overview for more options to contribute.

Customising the CMS /

Moderators: martimiz, Sean, Ed, biapar, Willr, Ingo, swaiba

Pagination for Multiple Page Types


Go to End


4 Posts   3804 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 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
dhensby

Community Member, 253 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!