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