$pagerootParent()

Get the lowest-level, non-homepage parent of this page

The rootParents typically comprise the first level of navigation on a site, and in many cases are considered the "section" pages of the site.

Example

// Determine if we are in the "products" section of the site
if($page->rootParent()->template == 'products') {
  // we are in the products section
} else {
  // we are in some other section of the site
}

Usage

$page = $page->rootParent();

Return value


Hooking $page→rootParent()

You can add your own hook events that are executed either before or after the $page->rootParent() method is executed. Examples of both are included below. A good place for hook code such as this is in your /site/ready.php file.

Hooking before

The 'before' hooks are called immediately before each $page->rootParent() method call is executed. This type of hook is especially useful for modifying arguments before they are sent to the method.

$this->addHookBefore('Page::rootParent', function(HookEvent $event) {
  // Get the object the event occurred on, if needed
  $page = $event->object;

  /* Your code here, perhaps modifying arguments */

  // Populate back arguments (if you have modified them)
});

Hooking after

The 'after' hooks are called immediately after each $page->rootParent() method call is executed. This type of hook is especially useful for modifying the value that was returned by the method call.

$this->addHookAfter('Page::rootParent', function(HookEvent $event) {
  // Get the object the event occurred on, if needed
  $page = $event->object;

  // An 'after' hook can retrieve and/or modify the return value
  $return = $event->return;

  /* Your code here, perhaps modifying the return value */

  // Populate back return value, if you have modified it
  $event->return = $return;
});

$page methods and properties

API reference based on ProcessWire core version 3.0.251