I'll tell you how mine works, but since I sell my services I won't give it to you.
I created a table that looks like this
id bigint auto_increment not null,
parent bigint not null default 0,
menu_name not null,
title char(100) not null,
keywords varchar(255) not null,
description varchar(255) not null,
script varchar(255) null,
pg_body mediumtext not null,
primary key (id)
index parent (parent)
unique menu_name (menu_name),
index title (title)
index keywords (keywords),
index description (description)
Then I made templates for the header and footer of the site.
Now here is a bit of how the logic works
parent is a recursive field, that points to 0 or another record's id. If it points to 0 then this is a top level item, if it is another record's id then this item belongs to a sub menu.
keywords and description are the meta tags
menu name is the name that appears on the menu while title it the title attribute of the html page.
here's a bit of magic. If script is filled in the cms will execute that script (note it is up to that script to include the header and footer from the cms), if that is blank then the html contained in pg_body will be displayed. This bit of logic allows you to add on to the cms in any way necesarry for dynamic pages (like your sign up form) while still having all of your static pages database driven for easy modifycation.
a warning if you intend to implement something like this make search engine friendly urls.