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, simon_w

Need some help with additional menu


7 Posts   799 Views


31 August 2011 at 10:21pm Community Member, 4 Posts

Hi there,
I am desperately trying to get an independent menu on my webpage to work.

Referring to this post:
I implemented the following in the mysite/code/Page.php:

class Page_Controller extends ContentController {

function Menu3(){
$whereStatement = "ShowInTopMenu = 1";
return DataObject::get("Page", $whereStatement);

And in the I have written:

<% control Menu3 %>
<li class="$FirstLast $LinkingMode">
<a href="$Link" title="$Title.XML"><span>$MenuTitle.XML</span></a></li>
<% end_control %></ul>

All I get is:

Server error
Sorry, there was a problem with handling your request.

What am I doing wrong?

Any hint would be really appreciated.


31 August 2011 at 11:35pm Community Member, 94 Posts


What's the error message when you run your site in dev mode?


1 September 2011 at 2:43am Community Member, 4 Posts

Hi, it says:
[User Error] Couldn't run query: SELECT "SiteTree_Live"."ClassName", "SiteTree_Live"."Created", (...)
AND (ShowInTopMenu = 1) ORDER BY "Sort" Unknown column 'ShowInTopMenu' in 'where clause'

I have no idea what that means.


1 September 2011 at 4:07am Community Member, 94 Posts

Seems like you did not run dev/build did you define ShowInTopMenu in your model?


1 September 2011 at 5:05am Community Member, 4 Posts

Ah ok, thank you.
All I have done so far are the to things written above. Sorry for the stupid question, but how and where do I have to define it?

I have run run dev/build, but with no effect.


1 September 2011 at 8:43am Forum Moderator, 1091 Posts

Did you ever create the ShowInTopMenu field? Only then does /dev/build/?flush=1 actually create the field in the database. The following example adds a new checkbox to the Behaviour tab on each page in the CMS, where you can then check the pages you want in the topmenu...

It comes from the recipe in the link you'll find in the topic you got your example from...

class Page extends SiteTree {
   static $db = array(
      "ShowInTopMenu" => "Boolean"

   function getCMSFields() {
      $fields = parent::getCMSFields();
      $fields->addFieldToTab("Root.Behaviour", new CheckboxField("ShowInTopMenu", "Show special menu "));
      return $fields;


1 September 2011 at 11:33am Community Member, 4 Posts

Martimiz--thank you for opening my eyes!