ti crei una vista di layout, la scomponi in diverse view e crei un file che carica le diverse parti, poi dai controller carichi questa vista layout e tra le variabili passi anche le vista dinamica.

es.

Vista layout scomposta

header.php

<html><head></head>
<body>
<div id='sezioni'>Home | Contatti</div>
<div id='contenutodinamico'>


footer.php

</div>
<div id='footer'></div>
</body>
</html>


Layout ricomposto

layout.php

<?php $this->load->view('header.php'); ?>

<?php $this->load->view($contenutodinamico) ?>

<?php $this->load->view('footer.php'); ?>


A questo punto nel controller caricherai sempre layout.php passando però $contenutodinamico


Codice PHP:
class Esempio extends CI_controller{
    function 
index(){
        
$data['contenutodinamico'] = "nome_view_da_caricare";
        
$this->load->view("layout.php"$data);    
    }