2013-08-11 15 views
8

Codeigniter uygulamasında sayfa şablonunu uygulamaya çalışıyorum, templating çalışıyor, örneğin ana sayfam olarak farklı görünümlerle atamaya çalıştığım bir blog sayfam var. ve sayfalama vb. Www.mywebsite.com/blog yazdığımda, ana sayfa şablonunda açılır veya bir sayfamın www.mywebsite.com/about olduğunu varsayarak, sayfa şablonunda da açılır. Ama web siteme www.mywebsite.com üzerinden erişmeye çalıştığımda, 404 hata sayfam var. Blog sayfamı nasıl ana sayfa olarak atayabilirim?Codeigniter Ayar Ana Sayfası (Default Controller)

Sayfa Denetleyici: my Rotalar

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 } 
} 

i sayfa kontrolöre varsayılan denetleyici belirledik

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

cevap

0

sorun www.mywebsite.com ziyaret ettiğinizde hiçbir URI segmenti var olmasıdır. Sen varsayılan değer oluşturmaya deneyebilirsiniz:

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

çok teşekkür ederim. –

0

Kodunuz

// 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()); 

$this->uri->segment(1) 

ilk url segmenti bakıyor uri segmenti kodu, sen www gibi sitenize göz atarken,. yousite.come/blog işe yarayacaktır, ancak www.yoursite.com'u yaptığınızda 1. uri segmenti eksik olduğu için yanlış dönecektir, bu yüzden 404 sayfasını göstereceğim.

Çözüm: İlk url segmenti yanlış döndürmez eksikse sadece

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

gibi hareket etmenin ikinci parametre ekleyebilir şimdi, varsayılan vlaue dönecektir 'blog'

Bu konuda daha fazla bilgi için codeingitor documentation

4

application/config/routes.php

görebilirsiniz
$route['default_controller'] = 'namecontroller'; 
+0

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