The layout of a page (produced by calling [CController::render]) is primarily governed by two properties: [CWebApplication::layout] and [CController::layout], as we know. The former specifies the global layout for all pages in the application, whilst the latter can be used to override the former and specify an individual layout for a specific page.
We don’t know how to specify the breadcrumbs and portlets because they differ between views. Because we assume the current controller has crumbs, portlets, and portlets2 attributes in all of these layouts, it’s only logical that we create a base controller class to specify these common properties, and then derive each particular concrete controller class from this base class.
We must configure the [CController::layout] property in each action view to use the above column-based layouts. This property can be set in the controller or action class, but since it is connected to rendering, it would be better to put it in the view script. If a post list page requires a three-column style, for example.