Foros del Web » Programando para Internet » PHP » CodeIgniter »

Cargando templates y secciones de pagina

Estas en el tema de Cargando templates y secciones de pagina en el foro de CodeIgniter en Foros del Web. Buenos días, hace una semana que arranque a usar este Framework y la verdad me gusto mucho. Estoy intentando optimizar un poco el código que ...
  #1 (permalink)  
Antiguo 06/02/2012, 07:54
Avatar de McBlink  
Fecha de Ingreso: noviembre-2006
Ubicación: $ARG->LaPampa()
Mensajes: 1.694
Antigüedad: 18 años, 1 mes
Puntos: 23
Cargando templates y secciones de pagina

Buenos días,
hace una semana que arranque a usar este Framework y la verdad me gusto mucho. Estoy intentando optimizar un poco el código que escribí estos días, que como todo principiante, estoy seguro que no es el optimo o la mejor forma de hacerlo.

Mi duda radica basicamente a la hora de cargar las vistas de la pagina. Usando las configuraciones en el Router me ha quedado así:


config/routes.php
Código PHP:
$route['home'] = "application/home"//secciones de la página
$route['fotos'] = "application/photos";
// etc.. 
Tengo un controlador principal llamado application.php, en el cual tengo un método por cada seccion de la página:

Código PHP:
    class Application extends CI_Controller 
     
        function 
index()  
        {                    
            return 
$this->home();                  
        }
        
        function 
home()
        {
            
$this->load->model('news_model');
            
$this->load->library('parser');
             

            
$headers $this->functions->default_headers();
            
$data['notes'] = $this->news_model->get_data();
            
            
$this->load->view('header'$headers);  
            
$this->parser->parse('main-content'$data);
            
$this->load->view('footer');                                     
        } 
        
        function 
photos()
        {
            
$headers['page_title'] = "Municipalidad de Guatraché :: Galeria de Fotos";
            
$headers['date'] = $this->getDate();
            
            
$this->load->view('header'$headers);  
            
$this->load->view('photos_view');
            
$this->load->view('footer');
        } 
Básicamente, en todos los metodos cargo el header, el contendio de esa seccion, y el footer.


De que forma puedo optimizar ésto? Es decir, me gustaria poder eliminar el hecho de tener que hace run metodo para cada seccion y encima, cargar practicamente las mismas cosas, salvo una vista especifica?


Muchisimas Gracias!
Saludos.

PD: Agradezco cualquier link interesante al respecto de como manejar templates y vistas..
  #2 (permalink)  
Antiguo 06/02/2012, 16:32
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 16 años, 5 meses
Puntos: 165
Respuesta: Cargando templates y secciones de pagina

Hola buenas,

Te paso el código tal y como yo lo haría:

Código PHP:
class Application extends CI_Controller {  
      
        public 
$default_view;
        public 
$data_view;
        public 
$data_partial;

        function 
__construct() {
            
$this->load->library('parser'); 
            
$this->default_view 'template/layouts/two_columns';
            
$this->data_view['headers'] = $this->functions->default_headers(); 
        }

        function 
index()   
        {                     
            
$this->load->model('news_model'); 
            
$this->data_partial['notes'] = $this->news_model->get_data(); 
             
            
$this->data_view['content'] = $this->load->view('partials/application/index'$this->data_partialTRUE);
            
$this->load->view($this->default_view$this->data_partial);
        }  
         
        function 
photos() 
        { 
            
$this->data_view['headers']['head_title'] = "Municipalidad de Guatraché :: Galeria de Fotos"
            
$this->data_view['headers']['date'] = $this->getDate(); 
             
            
$this->data_view['content'] = $this->load->view('partials/application/index'$this->data_partialTRUE);
            
$this->load->view($this->default_view$this->data_partial);
        }  

Yo el tema de los headers lo hago de otra manera, pero te puede servir así, más o menos puedes ver la idea.

Como ves, en views tendrás:

views/template/layouts -> contiene las diferentes layouts de tu template
views/partials/application -> contiene los partials para tu controlador application

Luego en tu ( es un ejemplo )

template/layouts/two_columns

Tendrías

Código PHP:
<?php $this->load->view('template/regions/header'); ?>
<?php 
echo $content?>
<?php $this
->load->view('template/regions/right_column'); ?>
<?php $this
->load->view('template/regions/footer'); ?>
Pero puedes tener:

Código PHP:
<?php echo $header?>
<?php 
echo $content?>
<?php $this
->load->view('template/regions/right_column'); ?>
<?php $this
->load->view('template/regions/footer'); ?>
Y pasarle el header por tel controlador

EL resto creo que lo puedes obtener tu solo, un saludo!
__________________
Gracias por el Karma :D

empleo ofertas de trabajo

Etiquetas: cargando, framework, secciones, templates
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:30.