2013-08-11 19 views
8

Próbuję zaimplementować szablon strony w aplikacji codeigniter, szablon działa dobrze, na przykład, mam stronę bloga, którą próbuję przypisać jako moją stronę główną, z innym widokiem i paginacja i tak dalej. Kiedy piszę www.mywebsite.com/blog, otwiera się w szablonie strony głównej lub zakładam, że mam stronę www.mywebsite.com/about, otwiera się również w szablonie strony. Ale kiedy próbuję uzyskać dostęp do mojej witryny za pośrednictwem www.mywebsite.com, mam stronę błędu 404. Jak mogę przypisać moją stronę bloga jako stronę główną?Ustawienia strony kodowania (domyślny kontroler)

Page Kontroler:

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

w moich trasach mam ustawić domyślną sterownika do kontrolera widoku

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

Odpowiedz

0

Problem polega na tym, że nie ma Segment URI podczas odwiedzania www.mywebsite.com. Można spróbować ustawić wartość domyślną jako:

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

dziękuję bardzo. –

0

Kod

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

URI Kod segmentu

$this->uri->segment(1) 

poszukuje pierwszy segment zawartości, podczas przeglądania witryny jak www. yousite.come/blog to zadziała, ale kiedy zrobisz www.yoursite.com, nie ma pierwszego segmentu uri, więc zwróci false, więc pokażę 404 stronę.

Rozwiązanie: Można tylko dodać drugi parametr do funkcji jak

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

teraz jeśli segment pierwszy url brakuje nie zwróci false, to powróci do domyślnego vlaue „blog”

Aby uzyskać więcej informacji na ten temat można zobaczyć codeingitor documentation

4

application/config/routes.php

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

on już zdefiniował, że '$ route ['default_controller'] =" page ";' –

Powiązane problemy