2013-08-11 6 views
8

Ich versuche, Seitentemplate in meiner Codeigniter-Anwendung zu implementieren, Templating funktioniert gut, zum Beispiel habe ich eine Blogseite, die ich als meine Homepage zuweisen möchte, mit anderen Ansicht und Seitenumbruch und so weiter. Wenn ich www.mywebsite.com/blog schreibe, wird es in der Homepagevorlage geöffnet, oder ich nehme an, dass ich eine Seite www.mywebsite.com/about habe, es wird auch in der Seitenvorlage geöffnet. Aber wenn ich versuche, über www.mywebsite.com auf meine Website zuzugreifen, habe ich eine 404-Fehlerseite. Wie kann ich meine Blog-Seite als Startseite zuordnen?Codeigniter Einstellung Homepage (Standard-Controller)

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

in meinem Routes, ich habe meine Standard-Controller auf Seite Controller

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

Antwort

0

Das Problem ist festgelegt, dass es kein URI Segment, wenn Sie www.mywebsite.com besuchen. Sie können versuchen, den Standardwert als Einstellung:

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

vielen Dank. –

0

Ihr Code

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

der uri Segmentcode

$this->uri->segment(1) 

sucht erste url Segment, wenn Sie Ihre Website wie www sehen. yousite.come/blog es funktioniert, aber wenn Sie www.yoursite.com 1. uri Segment fehlt, so wird es falsch zurückgeben, so werde ich 404 Seite zeigen.

Lösung: Sie können nur den zweiten Parameter an die Funktion hinzufügen, wie

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

jetzt, wenn die erste URL-Segment fehlt es nicht false zurück, wird es den Standard vlaue ‚Blog‘ Rückkehr

weitere Informationen zu diesem Thema finden Sie codeingitor documentation

4

application/config/routes.php

sehen
+0

Er definiert bereits $ route ['default_controller'] = "page"; ' –