Хорошо, вот мой взгляд на "виджеты", "модули", "частичные представления" или как вы хотите их называть. В любом случае мы подразумеваем многоразовые элементы для страниц.
Существует множество способов сделать это, поэтому мой путь может быть не для вас - опять же, это может быть именно то, что вы ищете!
Во-первых, я делаю виджеты в виде представлений, скажем, пути будут выглядеть так: views / widgets / myview.php
Я принимаю решение, какие виджеты я планирую использовать в моем контроллере. Мой метод - поместить пути к нужным представлениям в массив, например:
$data['widgets'] = array('widgets/myview', 'widgets/myview2');
Затем, когда я загружаю свой основной вид (все еще в моем контроллере), я делаю это:
$this->load->view('main_view', $data);
Теперь массив виджетов передается в основной вид.
Затем в моем главном окне, когда я добираюсь до места, куда отправляются виджеты, я перебираю свой массив следующим образом:
foreach ($widgets as $widget)
{
$this->load->view($widget);
}
Этот цикл запускается на моем главном экране. Удобно, что все данные, которые вы передали в основное представление, будут доступны в загруженных вложенных представлениях.
Я сделал много виджетов в Codeigniter таким образом, и этот метод я использую и в моей CMS.