2013-12-17 34 views
1

我正在開發一個使用具有共同頁眉和頁腳的codeigniter的項目。通過使用pjax,我可以動態地更改內容,而不會打亂頁眉和頁腳。此外,URL相對於控制器而改變。以下是我對url和SEO類比的關注。在公共頁眉頁腳編碼結構上實現Pjax

我的默認主頁控制器加載標題,索引頁和頁腳,如下所示。

public function index(){ 
    $this->load->model('dbmodel'); 
    $data['about'] = $this->dbmodel->about(); 
    $this->load->view('templates/header',$data); 
    $this->load->view('includes/index',$data); 
    $this->load->view('templates/footer'); 
} 

假設我點擊菜單項,它加載corresonding控制器路徑在URL(比如說 - http://domain.com/main/bandDirectory)和單獨pjax內容DIV被替換/與內容更新的同時,頁眉和頁腳保持不變。

public function bandDirectory(){ 
    $this->load->model('dbmodel'); 
    $data['content'] = $this->dbmodel->band(); 
    $this->load->view('includes/bandDirectory',$data); 
} 

當菜單項從主頁導航,因爲它最初加載頁眉和頁腳時,這工作正常。但是如果我們直接點擊url(例如http://domain.com/main/bandDirectory)會怎麼樣。此控制器不包含頁眉和頁腳,它僅加載將頁面分開的內容!如果搜索引擎索引這些網址,這將成爲一個嚴重的問題。如何解決這個問題? P:由於我在頭文件中實現了一個播放器,我不想在所有控制器中包含頁眉和頁腳,因爲這會阻止播放器在播放頁眉時進行播放。

回答

2

我在我們的項目中做的是在請求中尋找pjax頭部,如果pjax頭部存在,那麼只加載內容模板,否則加載完整模板,這是我在perl中的相應代碼,希望它有幫助

sub tour { 
my $self = shift; 
return $self->render(
    template => 'static/tour', 
    layout => $self->req->headers->header('X-PJAX') ? 'content_header' : 'full_width', 
);} 

可以實現相同的PHP

+0

嘿...它的工作!不知怎的,我錯過了Pjax文檔中的這個頭部分。下面的鏈接幫助我在php/codeigniter中實現。謝謝:) http://www.goldhawklabs.com/home/post/using-pjax-with-codeigniter – Ram