2013-12-17 30 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