October CMS. Suitable for any websites of any complexity. And most importantly - if you want to develop and study a really good, high-quality code - this is again October. An example of a tough application on steep framework (Larval). It can be easy to check and be sure - you will not regret it, it's just a fount of wisdom for provera :)
If you take the surface - there are two main ways:
1. Plugin Static Pages plus a Blog as an example of the implementation of different chips. This is for "versatile" pages, that is, for example, there is a page "Home" where there is no schema present, and there is a set of widgets a bit of everything, there is a page "About us" where you have tekstik wysiwyg and a list of "Our partners" - view objects <banner + header>, "Contacts" - where again tekstik three fields for phone, address and e-mail address and a coordinate pair to lat/lng for the map, etc. - all this in a relational DB schema to push the torment. Then yuzaem static pages, there is by the way very similar to MODx Revo, if anyone is familiar: layouts - analogue templates, syntax fields - the analog TV, the pages themselves - consequently resources partials - analogue chunks, the components of the - analogue of the snippets (not to be confused with the snippets themselves, the static pages, it's a little different, by the way very useful thing)
2. The plugin Builder to quickly create their custom plugins, database, models, relationships, and controllers the backend to this business to manage. That is, if there is such API, where 200 countries, cities 100K and 2 million places. All this is necessary to download and parse the database, and the output was 2080200 pages 5 templates, one for country, one for city and another let's say 3 different types of places in the city (hotel, cafe, attraction). Easy! Sawing 3 tables in the database, create the model with connections and routing (URLs direct in the tables can be stored, not forgetting indices) and BAM! 2 Leman pages do not slow down and conveniently controlled from backend to backend a lot of widgets - list, form, Manager relations (manage related objects, can and one-to-many and many-to-many, etc.). Widgets allow you and your to create - as the usual widgets and form fields. Distribute a set of CRUD pages to manage the entity in the backend - it is 5 minutes. Example with cities and sometimes quite primitive, as stupid a tree of 3 levels, but more complicated things as well sawn and not slow down, even there is in every 2 million seats have to attach another 10 entities with polymorphism etc., and bring a dozen of widgets on their pages - there's a limit - only the ability to design the database.
Yes, there is to paint is endless :)
PS: In the network there are issues and issue on github, reading that may give the impression that TSMs raw. But! Look at the date of these questions - less than 2 years ago are hard to find. Now everything is clean, Larval pulled up to 5.5 LTS, just beautiful! Oh, and most importantly - there is no such task that would require something to go into the kernel and something to rule. Such things can be forgotten completely. Yes, there is even multisitetf and multilingual content - chased in the form of plugins! I was in shock when looked at some things there are just as a plugin.