程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> Codeigniter 生成靜態頁面

Codeigniter 生成靜態頁面

編輯:關於PHP編程

    使用CI來生成靜態頁面,其實很簡單,就像論壇裡面說的那樣,讀出頁面中的數據,再寫入html文件中,最後顯示這個html文件就行了,好吧,上碼。     [php]  <?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');                    class MY_Loader extends CI_Loader {                            public function m_view($view, $vars = array(), $return = FALSE){           return $this->_m_ci_load(array('_ci_view' => $view, '_ci_vars' => $this->_ci_object_to_array($vars), '_ci_return' => $return));       }                            protected function _m_ci_load($_ci_data){             .....                                      $_ci_html_file=($_ci_ext==='')? $_ci_view.".html" : $_ci_view;//這,生成靜態頁面的文件名                                             foreach ($this->_ci_view_paths as $_ci_view_file => $cascade){                   if (file_exists($_ci_view_file.$_ci_file)){                       $_ci_path = $_ci_view_file.$_ci_file;                       $_ci_html_path=$_ci_view_file.$_ci_html_file;//生成靜態頁面的路徑                        $file_exists = TRUE;                       break;                   }         ......               }           }                         .......           //在這          if(config_item("html")===TRUE){//是否開啟生成靜態頁面                $_html_file=@fopen($_ci_html_path,'r');//創建.html文件                $buffer = ob_get_contents();               @ob_end_clean();               if(!$_html_file||(@filesize($_ci_html_path)!=strlen($buffer))){ //如果文件不存在或文件已更變                    $_html_file=@fopen($_ci_html_path,'w');                   flock($_html_file, LOCK_EX);                   fwrite($_html_file, $buffer);                                     flock($_html_file, LOCK_UN);                   fclose($_html_file);               }               //echo(filesize($_ci_html_path)."-".strlen($buffer));                include($_ci_html_path);           }                                   ......       }     }     <?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');                class MY_Loader extends CI_Loader {                        public function m_view($view, $vars = array(), $return = FALSE){         return $this->_m_ci_load(array('_ci_view' => $view, '_ci_vars' => $this->_ci_object_to_array($vars), '_ci_return' => $return));     }                        protected function _m_ci_load($_ci_data){           .....                                  $_ci_html_file=($_ci_ext==='')? $_ci_view.".html" : $_ci_view;//這,生成靜態頁面的文件名                                        foreach ($this->_ci_view_paths as $_ci_view_file => $cascade){                 if (file_exists($_ci_view_file.$_ci_file)){                     $_ci_path = $_ci_view_file.$_ci_file;                     $_ci_html_path=$_ci_view_file.$_ci_html_file;//生成靜態頁面的路徑                     $file_exists = TRUE;                     break;                 }       ......             }         }                     .......         //在這       if(config_item("html")===TRUE){//是否開啟生成靜態頁面             $_html_file=@fopen($_ci_html_path,'r');//創建.html文件             $buffer = ob_get_contents();             @ob_end_clean();             if(!$_html_file||(@filesize($_ci_html_path)!=strlen($buffer))){ //如果文件不存在或文件已更變                 $_html_file=@fopen($_ci_html_path,'w');                 flock($_html_file, LOCK_EX);                 fwrite($_html_file, $buffer);                                   flock($_html_file, LOCK_UN);                 fclose($_html_file);             }             //echo(filesize($_ci_html_path)."-".strlen($buffer));             include($_ci_html_path);         }                               ......     }   }調用     [html]   $this->load->m_view('login',$datas);     $this->load->m_view('login',$datas); 是否生成HTML文件   $config["html"]                =  TRUE;         全部代碼如下     [php]  <?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');             class MY_Loader extends CI_Loader {                     public function m_view($view, $vars = array(), $return = FALSE){           return $this->_m_ci_load(array('_ci_view' => $view, '_ci_vars' => $this->_ci_object_to_array($vars), '_ci_return' => $return));       }                     protected function _m_ci_load($_ci_data){           // Set the default data variables            foreach (array('_ci_view', '_ci_vars', '_ci_path', '_ci_return') as $_ci_val){               $$_ci_val = isset($_ci_data[$_ci_val]) ? $_ci_data[$_ci_val] : FALSE;           }                     $file_exists = FALSE;           // Set the path to the requested file            if (is_string($_ci_path) && $_ci_path !== ''){               $_ci_x = explode('/', $_ci_path);//使用一個字符串分割另一個字符串                $_ci_file = end($_ci_x);//將數組的內部指針指向最後一個單元            }else{               $_ci_ext = pathinfo($_ci_view, PATHINFO_EXTENSION);// 返回文件路徑的信息                $_ci_file = ($_ci_ext === '') ? $_ci_view.'.php' : $_ci_view;               $_ci_html_file=($_ci_ext==='')? $_ci_view.".html" : $_ci_view;//這,生成靜態頁面的文件名                                      foreach ($this->_ci_view_paths as $_ci_view_file => $cascade){                   if (file_exists($_ci_view_file.$_ci_file)){                       $_ci_path = $_ci_view_file.$_ci_file;                       $_ci_html_path=$_ci_view_file.$_ci_html_file;//生成靜態頁面的路徑                        $file_exists = TRUE;                       break;                   }                             if ( ! $cascade){                       break;                   }               }           }                     if ( ! $file_exists && ! file_exists($_ci_path))           {               show_error('Unable to load the requested file: '.$_ci_file);           }                     // This allows anything loaded using $this->load (views, files, etc.)            // to become accessible from within the Controller and Model functions.            $_ci_CI =& get_instance();           foreach (get_object_vars($_ci_CI) as $_ci_key => $_ci_var)           {               if ( ! isset($this->$_ci_key))               {                   $this->$_ci_key =& $_ci_CI->$_ci_key;               }           }                     /*           * Extract and cache variables           *           * You can either set variables using the dedicated $this->load->vars()           * function or via the second parameter of this function. We'll merge           * the two types and cache them so that views that are embedded within           * other views can have access to these variables.           */           if (is_array($_ci_vars))           {               $this->_ci_cached_vars = array_merge($this->_ci_cached_vars, $_ci_vars);           }           extract($this->_ci_cached_vars);                     /*           * Buffer the output           *           * We buffer the output for two reasons:           * 1. Speed. You get a significant speed boost.           * 2. So that the final rendered template can be post-processed by           *  the output class. Why do we need post processing? For one thing,           *  in order to show the elapsed page load time. Unless we can           *  intercept the content right before it's sent to the browser and           *  then stop the timer it won't be accurate.           */           ob_start();                     // If the PHP installation does not support short tags we'll            // do a little string replacement, changing the short tags            // to standard PHP echo statements.            if ( ! is_php('5.4') && (bool) @ini_get('short_open_tag') === FALSE               && config_item('rewrite_short_tags') === TRUE && function_usable('eval')           )           {               echo eval('?>'.preg_replace('/;*\s*\?>/', '; ?>', str_replace('<?=', '<?php echo ', file_get_contents($_ci_path))));           }           else           {               include($_ci_path); // include() vs include_once() allows for multiple views with the same name            }                     log_message('debug', 'File loaded: '.$_ci_path);                     // Return the file data if requested            if ($_ci_return === TRUE)           {               $buffer = ob_get_contents();               @ob_end_clean();               return $buffer;           }           //在這             if(config_item("html")===TRUE){//是否開啟生成靜態頁面                $_html_file=@fopen($_ci_html_path,'r');//創建.html文件                $buffer = ob_get_contents();               @ob_end_clean();               if(!$_html_file||(@filesize($_ci_html_path)!=strlen($buffer))){                          $_html_file=@fopen($_ci_html_path,'w');                          flock($_html_file, LOCK_EX);                   fwrite($_html_file, $buffer);                                     flock($_html_file, LOCK_UN);                   fclose($_html_file);               }               //echo(filesize($_ci_html_path)."-".strlen($buffer));                include($_ci_html_path);           }                                           /*           * Flush the buffer... or buff the flusher?           *           * In order to permit views to be nested within           * other views, we need to flush the content back out whenever           * we are beyond the first level of output buffering so that           * it can be seen and included properly by the first included           * template and any subsequent ones. Oy!           */           if (ob_get_level() > $this->_ci_ob_level + 1)           {               ob_end_flush();           }           else           {               $_ci_CI->output->append_output(ob_get_contents());               @ob_end_clean();           }       }     }     <?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');         class MY_Loader extends CI_Loader {                 public function m_view($view, $vars = array(), $return = FALSE){         return $this->_m_ci_load(array('_ci_view' => $view, '_ci_vars' => $this->_ci_object_to_array($vars), '_ci_return' => $return));     }                 protected function _m_ci_load($_ci_data){         // Set the default data variables         foreach (array('_ci_view', '_ci_vars', '_ci_path', '_ci_return') as $_ci_val){             $$_ci_val = isset($_ci_data[$_ci_val]) ? $_ci_data[$_ci_val] : FALSE;         }                 $file_exists = FALSE;         // Set the path to the requested file         if (is_string($_ci_path) && $_ci_path !== ''){             $_ci_x = explode('/', $_ci_path);//使用一個字符串分割另一個字符串             $_ci_file = end($_ci_x);//將數組的內部指針指向最後一個單元         }else{             $_ci_ext = pathinfo($_ci_view, PATHINFO_EXTENSION);// 返回文件路徑的信息             $_ci_file = ($_ci_ext === '') ? $_ci_view.'.php' : $_ci_view;             $_ci_html_file=($_ci_ext==='')? $_ci_view.".html" : $_ci_view;//這,生成靜態頁面的文件名                                 foreach ($this->_ci_view_paths as $_ci_view_file => $cascade){                 if (file_exists($_ci_view_file.$_ci_file)){                     $_ci_path = $_ci_view_file.$_ci_file;                     $_ci_html_path=$_ci_view_file.$_ci_html_file;//生成靜態頁面的路徑                     $file_exists = TRUE;                     break;                 }                         if ( ! $cascade){                     break;                 }             }         }                 if ( ! $file_exists && ! file_exists($_ci_path))         {             show_error('Unable to load the requested file: '.$_ci_file);         }                 // This allows anything loaded using $this->load (views, files, etc.)         // to become accessible from within the Controller and Model functions.         $_ci_CI =& get_instance();         foreach (get_object_vars($_ci_CI) as $_ci_key => $_ci_var)         {             if ( ! isset($this->$_ci_key))             {                 $this->$_ci_key =& $_ci_CI->$_ci_key;             }         }                 /*          * Extract and cache variables          *          * You can either set variables using the dedicated $this->load->vars()          * function or via the second parameter of this function. We'll merge          * the two types and cache them so that views that are embedded within          * other views can have access to these variables.          */         if (is_array($_ci_vars))         {             $this->_ci_cached_vars = array_merge($this->_ci_cached_vars, $_ci_vars);         }         extract($this->_ci_cached_vars);                 /*          * Buffer the output          *          * We buffer the output for two reasons:          * 1. Speed. You get a significant speed boost.          * 2. So that the final rendered template can be post-processed by          *  the output class. Why do we need post processing? For one thing,          *  in order to show the elapsed page load time. Unless we can          *  intercept the content right before it's sent to the browser and          *  then stop the timer it won't be accurate.          */         ob_start();                 // If the PHP installation does not support short tags we'll         // do a little string replacement, changing the short tags         // to standard PHP echo statements.         if ( ! is_php('5.4') && (bool) @ini_get('short_open_tag') === FALSE             && config_item('rewrite_short_tags') === TRUE && function_usable('eval')         )         {             echo eval('?>'.preg_replace('/;*\s*\?>/', '; ?>', str_replace('<?=', '<?php echo ', file_get_contents($_ci_path))));         }         else         {             include($_ci_path); // include() vs include_once() allows for multiple views with the same name         }                 log_message('debug', 'File loaded: '.$_ci_path);                 // Return the file data if requested         if ($_ci_return === TRUE)         {             $buffer = ob_get_contents();             @ob_end_clean();             return $buffer;         }         //在這          if(config_item("html")===TRUE){//是否開啟生成靜態頁面             $_html_file=@fopen($_ci_html_path,'r');//創建.html文件             $buffer = ob_get_contents();             @ob_end_clean();             if(!$_html_file||(@filesize($_ci_html_path)!=strlen($buffer))){                        $_html_file=@fopen($_ci_html_path,'w');                        flock($_html_file, LOCK_EX);                 fwrite($_html_file, $buffer);                                   flock($_html_file, LOCK_UN);                 fclose($_html_file);             }             //echo(filesize($_ci_html_path)."-".strlen($buffer));             include($_ci_html_path);         }                                     /*          * Flush the buffer... or buff the flusher?          *          * In order to permit views to be nested within          * other views, we need to flush the content back out whenever          * we are beyond the first level of output buffering so that          * it can be seen and included properly by the first included          * template and any subsequent ones. Oy!          */ www.2cto.com         if (ob_get_level() > $this->_ci_ob_level + 1)         {             ob_end_flush();         }         else         {             $_ci_CI->output->append_output(ob_get_contents());             @ob_end_clean();         }     }   }  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved