В одном проекте делал так. Все методы контроллеров (кроме тех, что связаны с AJAX) заканчивались примерно таким кодом
$this->view_data = array (
'page_title' => 'Some title', // текст, идущий в <h1>
'page_content' => 'view_dir/view_name', // путь к нужной вьюхе относительно каталога views
// куча других переменных, идущих во вьюху
);
$this->load->view ('page', $this->view_data);
И код файла page.php
<?php
$page = array (
'layout/header', // путь к общему хэдеру
$page_content, // контент
'layout/footer' // путь к общему футеру
);
foreach ($page as $item) {
$this->load->view ($item);
}
/* End of file page.php */
/* Location: ./application/views/page.php */