Built-In Properties
The following are some of the built-in properties always available about a page, and how to retrieve them.
Retrieve a page's name
print $c->getCollectionName();
Get its short description
print $c->getCollectionDescription();
Get the canonical date the page was created
print $c->getCollectionDateAdded();
Get the publicly changeable date (useful for treating pages like blog objects.)
print $c->getCollectionDatePublic();
Get the User ID of the page's owner
print $c->getCollectionUserID();
Custom Attributes
It's also easy to retrieve a custom attribute about a page.
$response = $c->getAttribute('attribute_handle');
The $response
in this case will be the standard response based on the
type of attribute. Sometimes this will be simple:
$response = $c->getAttribute('exclude_nav');
Since The Exclude from Navigation attribute is a boolean attribute,
$response
will either be true or false.
$response = $c->getAttribute('thumbnail');
The Elemental Full installation of sample content creates a
"thumbnail" attribute of the image/file type. If this attribute is
present for the page, the $response
will actually be either null or an
instance of the
Concrete\Core\File\File
object.
Return Presentable Data
Custom attributes types can return their data in ways that are meant
to be presented to the end user. While the custom getAttribute()
call
returns the data in its mode programmatic state (e.g. returning file
objects, address objects, etc…) it's easy to return the data in such a
way that it can be quickly printed out to the end user.
$response = $c->getAttribute('thumbnail', 'display');
This will return the thumbnail attribute using the image/file
attribute types getDisplayValue()
method, which returns an HTML link.
Example
Here's an example taken from a theme's page template, that lists all the tags on a page, and makes it easy to link to them in a search interface.
<?php
$tags = $c->getAttribute('tags');
if ($tags && count($tags)) { ?>
<div class="tags">
<div class="title"><span>Tags</span></div>
<ul>
<? foreach($tags as $tag) { ?>
<li><a href="<?=URL::page($blog, 'tag', strtolower($tag))?>"><?=$tag?></a></li>
<? } ?>
</ul>
</div>
<? }
?>
Checking if in Edit Mode
It's easy to check to see if the page is currently being edited by a user.
if ($c->isEditMode()) {
}
Retrieving all Blocks Objects on a Page.
$blocks = $c->getBlocks();
Retrieving all Blocks Objects from an Area on a Page.
$blocks = $c->getBlocks('Area name');
$blockIDs = $c->getBlockIDs('Area name');
Retrieving an Area Object on a Page.
$area = $c->getArea('Area name');
Page API
There are many, many more operations available on the page object. Check out the API documentation.