Я просто задавался вопросом, как наилучшим образом / практиковать для реализации меню, верхние и нижние колонтитулы с меняющимся контентом, такие как уведомления с помощью codeignitor.
Например, у меня было предупреждение в меню заголовка, связанное с данными в базе данных, и мне нужно было проверять изменения каждый раз, когда страница загружается. Первоначально я думал, что каждый раз я могу вызвать заголовок, используя $ this-> load-> view ('header'), но это означало бы, что мне понадобится глобальная функция для разработки любых изменений в предупреждениях, а затем передать это в представление заголовка , каждый раз, не хорошо!
Я предполагаю, что мне нужен глобальный способ вызова функции, которая загружает заголовок (меню) веб-сайта из любого контроллера, который работает с контентом, и соответственно отображает представление.
так, например, контроллер, который показывает страницы блога.
в конструкторе контроллера – укажите папку, в которой находятся файлы вашего блога, и имя шаблона
// the folder your content files are in $this->templatefolder = 'blog' ; // the template name $this->view_template = 'blog_template' ;
в методе, когда вы готовы вызвать некоторые представления
$data['content01'] = 'search_articles'; $data['content02'] = 'main_article'; $data['content03'] = 'suggested_articles'; $this->load->view( $this->view_template, $data );
сам шаблон просматривает / blog_template.php
// opening html etc that is generic to website $this->load->view('tmpl_open'); // so if the header has to be dynamic // get the header from a model (or library etc) // and either pass the header content or just echo it out directly $this->load->model('header'); if( ! $newHeader = $this->header->returnNewHeader() ) { // fallback if the header doesn't come back from the model $this->load->view('default_header'); } else { echo $newHeader ; } // this is optional but IF the template folder is not set // we have a default folder called 'pages' to look in for the content views // but in this example the folder is set to be 'blog' // so the blog view files will be in application/views/blog/search_articles.php etc etc if( isset($this->templatefolder)){ $templatefolder = $this->templatefolder . '/' ; } else { $templatefolder = 'pages/'; } // header that is specific for the content $this->load->view($templatefolder . 'header'); // so in this specific example its going to load 3 view files, but this part is completely flexible if(isset($content01)) $this->load->view($templatefolder.$content01); if(isset($content02)) $this->load->view($templatefolder.$content02); if(isset($content03)) $this->load->view($templatefolder.$content03); if(isset($content04)) $this->load->view($templatefolder.$content04); if(isset($content05)) $this->load->view($templatefolder.$content05); if(isset($content06)) $this->load->view($templatefolder.$content06); if(isset($content07)) $this->load->view($templatefolder.$content07); if(isset($content08)) $this->load->view($templatefolder.$content08); // example of an optional file that you can uncomment for testing // $this->load->view('objecttesting'); // bottom nav bar generic to website $this->load->view('tmpl_footer'); // closing html etc generic to website $this->load->view('tmpl_close');