IMHO, if you write CMS, then the best option would be the following — a rigid form for the page(better almost direct mapping in the database) + the ability to add additional fields(like key-value, then the template is easy to deduce that {misc key}) + form Builder and many widgets. With a bit of rigor, you can implement almost everything. For content, that will be nice to have a rich editor that will work with the media library. Look at Wordpress(though not all that I have described, he can out of the box).
\r
Another thing is if I want to write a CMF, then you need to make the possibility of coding from the admin, but this admin will not do.
Look At Modx.