問題描述
我只是想知道使用 codeigniter 實現帶有更改內容(例如通知)的菜單、頁眉和頁腳的最佳方法/實踐.
I was just wondering the best way/practice to implement menus, headers and footers with changing content such as notifications using codeigniter.
例如,我在標題菜單中有一個警報,該警報鏈接回數據庫中的數據,并且每次加載頁面時我都需要檢查更改.最初我以為我可以每次都使用 $this->load->view('header') 調用標題,但這意味著我需要一個全局函數來計算警報的任何更改,然后將其傳遞給標題視圖,每次都不好!
For example say I had an alert within the header menu that linked back to data within a database and I needed to check for changes each time a page is loaded. Initially I thought I could call the header using $this->load->view('header') each time, but this would mean I would need a global function to work out any changes on alerts and then pass that to the header view, each time, not good!
我想我需要一種全局方式來調用從任何控制器加載網站標題(菜單)的函數,該控制器計算出內容并相應地顯示視圖.
I guess I need a global way to call function that loads the website header (menu) from any controller which works out the content and displays the view accordingly.
推薦答案
例如一個顯示博客頁面的控制器.
在您的控制器構造函數中 - 定義您的博客視圖文件所在的文件夾和模板名稱
so for example a controller that shows blog pages.
in your controller constructor - define the folder your blog view files are in and the template name
// the folder your content files are in
$this->templatefolder = 'blog' ;
// the template name
$this->view_template = 'blog_template' ;
在您準備調用某些視圖時的方法中
in a method when you are ready to call some views
$data['content01'] = 'search_articles';
$data['content02'] = 'main_article';
$data['content03'] = 'suggested_articles';
$this->load->view( $this->view_template, $data );
模板本身視圖/blog_template.php
the template itself views/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');
這篇關于使用 codeigniter 實現動態菜單/頁眉/頁腳的最佳方法的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!