Домашняя страница настройки Codeigniter (контроллер по умолчанию)

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

Контроллер страниц:

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";

3 ответа

Решение

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

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

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

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

Ваш код

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

$this->uri->segment(1)

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

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

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

теперь, если первый сегмент URL отсутствует, он не вернет false, он вернет значение по умолчанию 'blog'

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

Другие вопросы по тегам