2013-08-11 3 views
8

Я пытаюсь реализовать шаблонизацию страниц в моем приложении codeigniter, тем не менее, templating работает нормально, у меня есть страница блога, которую я пытаюсь назначить своей домашней страницей, с другим видом и разбиение на страницы и так далее. Когда я пишу www.mywebsite.com/blog, он открывается на домашнем шаблоне или предполагает, что у меня есть страница www.mywebsite.com/about, она также открывается в шаблоне страницы. Но когда я пытаюсь получить доступ к моему сайту через www.mywebsite.com, у меня есть страница ошибки 404. Как я могу назначить страницу своего блога в качестве главной страницы?Домашняя страница настройки Codeigniter (контроллер по умолчанию)

Page Controller:

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

в моих маршрутах, я поставил мой контроллер по умолчанию контроллера страницы

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

ответ

0

Проблема заключается в том, что нет никакого сегмента URI, когда вы посещаете www.mywebsite.com. Вы можете попробовать установить значение по умолчанию, как:

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

спасибо. –

0

Ваш код

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

ищет первый сегмент URL-адрес, когда вы просматриваете свой сайт, как WWW. yousite.come/blog это будет работать, но когда вы делаете www.yoursite.com 1-й сегмент uri отсутствует, поэтому он вернет false, поэтому я покажу 404 страницы.

Решение: Вы можете просто добавить второй параметр функции, как

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

теперь, если сегмент первого URL отсутствует он не возвращает ложь, то он вернет vlaue по умолчанию «блог»

Для получения дополнительной информации об этом вы можете увидеть codeingitor documentation

4

приложение/Config/routes.php

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

он уже определяет, что '$ route ['default_controller'] =" page ";' –

Смежные вопросы