2013-08-11 12 views
8

Sto cercando di implementare il template di pagina nella mia applicazione codeigniter, il template sta funzionando bene ad esempio, ho una pagina blog, che sto cercando di assegnare come mia homepage, con vista diversa e impaginazione e così via. Quando scrivo www.mywebsite.com/blog, viene aperto nel modello di homepage o presumo di avere una pagina www.mywebsite.com/about, ma viene aperta anche nel modello di pagina. Ma quando provo ad accedere al mio sito web tramite www.mywebsite.com, ho una pagina di errore 404. Come posso assegnare la mia pagina del blog come homepage?Codeigniter Setting Homepage (Controller predefinito)

controller Pagina:

class Page extends Frontend_Controller { 

public function __construct(){ 
    parent::__construct(); 
    $this->load->model('page_m'); 
} 

public function index() { 

// Fetch the page template 
$this->data['page'] = $this->page_m->get_by(array('slug' => (string) $this->uri->segment(1)), TRUE); 
count($this->data['page']) || show_404(current_url()); 

add_meta_title($this->data['page']->title); 
add_meta_keyword($this->data['page']->keywords); 
add_meta_description($this->data['page']->description); 

// Fetch the page data 
$method = '_' . $this->data['page']->template; 
if (method_exists($this, $method)) { 
     $this->$method(); 
} 
else { 
log_message('error', 'Could not load template ' . $method .' in file ' . __FILE__ . ' at line ' . __LINE__); 
} 

// Load the view 
$this->data['subview'] = $this->data['page']->template; 
$this->load->view('_main_layout', $this->data); 
} 

private function _page(){ // methods } 
private function _homepage(){ // methods } 
} 

nei miei Routes, ho impostato il mio controller di default al controllore pagina

$route['default_controller'] = "page"; 

risposta

0

Il problema è che non c'è nessun segmento URI quando si visita www.mywebsite.com. Si può provare a impostare il valore di default come:

$this->uri->segment(1 , 'blog') 
+0

grazie mille. –

0

Il codice

// Fetch the page template 
$this->data['page'] = $this->page_m->get_by(array('slug' => (string) $this->uri->segment(1)), TRUE); 
count($this->data['page']) || show_404(current_url()); 

il codice segmento uri

$this->uri->segment(1) 

sta cercando primo segmento url, quando si esplora il sito come www. yousite.come/blog funzionerà, ma quando fai www.yoursite.com manca il primo segmento uri, quindi restituirà false, quindi mostrerò 404 pagine.

Soluzione: si può semplicemente aggiungere il secondo parametro della funzione come

$this->uri->segment(1,'blog'); 

ora se il primo segmento di URL manca non restituirà falso, verrà restituito il vlaue default 'blog'

Per ulteriori informazioni su questo si può vedere codeingitor documentation

4

application/config/routes.php

$route['default_controller'] = 'namecontroller'; 
+0

ha già definito '$ route ['default_controller'] =" page ";' –

Problemi correlati