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.

General Questions /

General questions about getting started with SilverStripe that don't fit in any of the categories above.

Moderators: martimiz, Sean, Ed, biapar, Willr, Ingo, swaiba

Selecting side bar blocks per page.

Go to End



Community Member, 2 Posts

22 July 2009 at 7:41am

Edited: 22/07/2009 7:43am

I have a sidebar on my website which contains a set of blocks. These blocks are basically just a single link (i.e. "Download White Papers" or "Request a Demo"). Some pages need to have some of the blocks visible, other pages have different blocks. After reading and it seemed as though it would be fairly simple to create a new page type called SideBarItem, and add a has_many to the Page class.

I'm having a couple of problems though. First off, if I click "add" in the complex table field, I get an error stating that the function SideBarItem() is not defined. I can still however create pages of type SideBarItem in the site tree and get them to show up in the table though. Unfortunately when I do this, the check box to associate it with the page is disabled and cannot be clicked.

Any thoughts would be appreciated (I am a newbie- sorry..)

My code:


class Page extends SiteTree {
  public static $has_many = array( 'SidebarItems' => 'SidebarItem' );

  public function getCMSFields() {
      $fields = parent::getCMSFields();

      $tablefield = new HasManyComplexTableField(
                  'Title' => 'Title',

      $tablefield->setAddTitle('A SidebarItem');
      $fields->addFieldToTab('Root.Content.SidebarItems', $tablefield);

      return $fields;



class SidebarItem extends Page {

class SidebarItem_Controller extends Page_Controller {


Obviously nothing special for SidebarItem..