There are many reasons why you may want to hard-code a pagelist rather than use a block. The most common reason I find is when I want to make an ajax pagelist. I will hard-code the pagelist into a tools file and call that tools file from my javascript ajax function.

This code is for Concrete5 v5.7+.

To embed the pagelist, first load the navigation helper:

$nh = Loader::helper('navigation');

Then we add the following, notice in this case we are filtering the results so that we show blog pages - i.e. pages which use the blog_page pagetype:

$pl = new \Concrete\Core\Page\PageList();
$pl->filterByPageTypeHandle('blog_page');
$pages = $pl->getResults();

Then we need a foreach loop to go through the results and actually write out pages:

foreach($pages as $page) {
    $title = $page->getCollectionName();
    $intro = htmlentities($page->getCollectionDescription());  
    $url = $nh->getCollectionURL($page);
    echo $title;
}

In this example, we are just writing out the title of each page.

Complete Pagelist Example

So our complete pagelist example looks like this:

$nh = Loader::helper('navigation');
$pl = new \Concrete\Core\Page\PageList();
$pl->filterByPageTypeHandle('blog_page');
$pages = $pl->getResults();

foreach($pages as $page) {
    $title = $page->getCollectionName();
    $intro = htmlentities($page->getCollectionDescription());  
    $url = $nh->getCollectionURL($page);
    echo $title;
}

Easy isn't it?

Of course, you can do much more.  Here are some of the filters available:

$pl->filterByPageTypeHandle('blog_page');
$pl->filterByPath('/recent-work', true);
$pl->filterByKeywords();

See more filters at /concrete/src/Page/PageList.php

Adjustments for v5.6+

For version 5.6 of Concrete5 you want to adjust the above code to have the following lines:

Loader::model('page_list');
$pl = new PageList();
$pages = $pl->get();

Join the discussion

Want to have your say on this topic? Start by posting your comment below...

Can we help?

We are a digital agency, specialising in web design, development, hosting and digital marketing. If you need help with anything, feel free to reach out...

Required
Required
Required

Keep up to date

Call us