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, biapar, Willr, Ingo, swaiba

Selecting side bar blocks per page.


Go to End
Reply


1081 Views

Avatar
keschrich

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 http://doc.silverstripe.org/doku.php?id=tutorial:5-dataobject-relationship-management and http://www.ssbits.com/create-a-static-sidebar/ 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:

Page.php

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

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

      $tablefield = new HasManyComplexTableField(
            $this,
            'SidebarItems',
            'SidebarItem',
            array(
                  'Title' => 'Title',
            ),
            'getCMSFields_forPopup'
      );

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

      return $fields;
}
//--snip

SidebarItem.php:

<?php

class SidebarItem extends Page {
}

class SidebarItem_Controller extends Page_Controller {
}

?>

Obviously nothing special for SidebarItem..

Thanks,
Ken