Revision: 63387
                            
                                                            
                                    
                                        
Updated Code
                                    
                                    
                                                    
                        at May 2, 2013 02:54 by phptrampos
                            
                            Updated Code
<?php  
//*************************************
//Arquivo: application/config/hooks.php 
//*************************************
if ( ! defined('BASEPATH')) exit('No direct script access allowed');
$hook['post_controller_constructor'] = array(
		"class" => "frontController",
		"function" => "onApplicationStart",
		"filename" => "frontController.php",
		"filepath" => "hooks"
	);
$hook['post_controller'] = array(
		"class" => "frontController",
		"function" => "onApplicationEnd",
		"filename" => "frontController.php",
		"filepath" => "hooks"
	);	
?>
<?php
//**********************************************
//Arquivo: applicatoin/hooks/frontController.php
//**********************************************
class frontController {
    function onApplicationStart() {
            $CI =& get_instance();
            if(!$this->isAjax() && !@in_array($CI->uri->rsegment(2), $CI->noRender))
                $CI->load->view("_header");
    }
    function onApplicationEnd() {
            $CI =& get_instance();
            if(!$this->isAjax() && !@in_array($CI->uri->rsegment(2), $CI->noRender))
                $CI->load->view("_footer");
    }
    function isAjax() {
        if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH'] == "XMLHttpRequest") {
                return true;
        } else {
                return false;
        }
    }
}
?>
                                
                            Revision: 63386
                            
                                                            
                                    
                                        
Initial Code
                                    
                                    
                                                            
                                    
                                        
Initial URL
                                    
                                    
                                
                                                            
                                    
                                        
Initial Description
                                    
                                    
                                                            
                                    
                                        
Initial Title
                                    
                                    
                                                            
                                    
                                        
Initial Tags
                                    
                                    
                                
                                                            
                                    
                                        
Initial Language
                                    
                                    
                                                    
                        at May 2, 2013 02:48 by phptrampos
                            
                            Initial Code
<?php  
//*************************************
//Arquivo: application/config/hooks.php 
//*************************************
if ( ! defined('BASEPATH')) exit('No direct script access allowed');
$hook['post_controller_constructor'] = array(
		"class" => "frontController",
		"function" => "onApplicationStart",
		"filename" => "frontController.php",
		"filepath" => "hooks"
	);
$hook['post_controller'] = array(
		"class" => "frontController",
		"function" => "onApplicationEnd",
		"filename" => "frontController.php",
		"filepath" => "hooks"
	);	
?>
<?php
//**********************************************
//Arquivo: applicatoin/hooks/frontController.php
//**********************************************
class frontController {
    function onApplicationStart() {
            $CI =& get_instance();
            if(!$this->isAjax() && !@in_array($CI->uri->rsegment(2), $CI->noRender)){
                $CI->load->view("_header");
            }
    }
    function onApplicationEnd() {
            $CI =& get_instance();
            if(!$this->isAjax() && !@in_array($CI->uri->rsegment(2), $CI->noRender)){
                $CI->load->view("_footer");
    }
    function isAjax() {
        if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH'] == "XMLHttpRequest") {
                return true;
        } else {
                return false;
        }
    }
}
?>
                                Initial URL
Initial Description
Este é um hook que utilizo para evitar de carregar headers e footers em cada view que carrego nos meus projetos. Tem me sido muito útil desde que comecei a utiliza-lo.
O que ele faz? --------
Basicamente a cada chamada ($this->load->view('arquivo');) que faço nos controllers, o hook irá carregar junto 2 outros views um header e um footer (respectivamente os arquivos _header.php e _footer.php na pasta /view). Um antes da minha chamada , no caso o _header, e um depois que a view principal carregar, no caso o _footer.
Como usar? --------
1º - Modifique o arquivo /config/hooks.php com o código informado mais abaixo;
2º - Crie o arquivo frontController.php na pasta /hooks e cole o código informado no Source;
3º - Habilite os hooks no arquivo config.php mudando o parâmetro: $config['enable_hooks'] = TRUE;
4º - Crie 2 arquivos na pasta /application/views/_header.php e _footer.php e os modifique de acordo com o seu site. Colocando o conteúdo de Header (meta tags, styles e javascripts fixos) no arquivo _header.php até a abertura da tag body;
No arquivo _footer.php o fechamento do </body></html> e qualquer outro conteúdo que queira deixar fixo no rodapé do seu site.
Chamadas AJAX:
Não se preocupe com as suas chamadas AJAX. Este Hook irá perceber isso e não irá carregar as views.
Se tiver dúvidas, entre em contato comigo pelo email : phptrampos[at]gmail[dot]com
                                Initial Title
Hooks - frontController
Initial Tags
Initial Language
PHP