Cchost/developer/Hooking Page Render
| Docs Home | Install | Upgrade | Troubleshoot | Customize | Admins | Devs | Content | Query | Templates | Commands | Skins |
Page rendering happens in 2 main phases in the CCPage class. In Phase 1 all the variables are gathered into a huge variable array. In Phase 2 CCPage calls down to it's base class, CCSkin, to merge the variables with the config-selected page template.
Right before Phase 2 happens, CCPage triggers an event to let any custom code prepare any last minute hacks before handing off to the template engine (CCSkin).
If you create a module that hooks that event you can manipulate the variables (er, hack at the array) to change the appearance of any/all pages.
An example: (put the following code with a PHP extension into your <local_files>/lib directory):
CCEvents::AddHandler(CC_EVENT_RENDER_PAGE, 'page_trapper' );
function page_trapper( &$page )
{
// This might be an array (I think)
$caption =& $page->vars['page-caption'];
// same with this
$title =& $page->vars['page-title'];
$caption = 'CAP: ' . $caption;
$title = 'TITLE: ' . $title;
}
The code above will simply append strings to the caption and title to every page in the system. If you are looking for a specific page you can for that page's title (e.g. 'str_file_deleting').
Of course your hacks are not limited to these variables. You can also, say, remove the bread crumbs from specific page by simply null-ing out the 'bread_crumbs' var:
CCEvents::AddHandler(CC_EVENT_RENDER_PAGE, 'page_trapper' );
function page_trapper( &$page )
{
$title =& $page->vars['page-title'];
if( $title == 'str_file_deleting' )
{
unset( $page->vars['bread_crumbs'] );
}
}
In order to get a full idea of what variables are available you can inspect the page object:
CCDebug::Enable(true); CCDebug::PrintVar($page);
And don't forget about variable dumps.