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.

Data Model Questions /

Banner Image defaults to parent


Reply


1403 Views

Avatar
NickJacobs

Community Member, 144 Posts

20 March 2009 at 5:37pm

Edited: 20/03/2009 5:41pm

In a site I'm building I want different banner images for each section of the site, and so want a page to default it's parents banner if one is not set. I have set up the following code, but I don't see anything on the page

the code is based on [url=http://www.silverstripe.org/archive/show/1459?start=0#post36067]this archived post[/url]

In Page.php

class Page extends SiteTree {
   
   static $has_one = array(
   'BannerImage' => 'Image'
);
.....

class Page_Controller extends ContentController {
   
   .....   
   
   
function getBannerImage() {

if(empty($BannerImage->ID)){
$BannerImage = $this->getParentBannerImage($this);
   }
return $BannerImage;
}

private function getParentBannerImage($CurrentPage){
$Parent = $CurrentPage->Parent;

if(is_object($Parent)){

if(!empty($BannerImage->ID)){
return $BannerImage;
// We found the current header! Let's return it!
} else {
return $this->getParentBannerImage($Parent);
// We didn't find a header,so we have to call ourselves again
}

} else {
return false;
}
}
   
....

In Page.ss i'll just do something like this:

<div id="banner" style="background:url(<% control getBannerImage %>$URL<% end_control %>)"></div>

So, it's probably something completely obvious...just not to me at the mo!