我正在使用具有公共页眉和页脚的codeigniter开发项目。通过使用pjax,我能够单独动态更改内容而不会干扰页眉和页脚。此外,url也会相对于控制器发生变化。以下是我对网址和搜索引擎优化类比的关注。
我的默认主页控制器加载标题,索引页和页脚,如下所示。
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');
}
假设我单击一个菜单项,它会在URL中加载相应的控制器路径(例如 - http://domain.com/main/bandDirectory),并且仅当页眉和页脚保持不变时,pjax content div将替换/更新内容。
public function bandDirectory(){
$this->load->model('dbmodel');
$data['content'] = $this->dbmodel->band();
$this->load->view('includes/bandDirectory',$data);
}
当菜单项从主页导航时,这可以正常工作,因为它最初加载页眉和页脚。但是,如果我们直接点击网址(例如http://domain.com/main/bandDirectory),该怎么办?此控制器不包含页眉和页脚,它只加载打破页面分开的内容!如果搜索引擎索引这些网址,这将成为一个严重的问题。如何克服这个问题?
P.S:由于我在标题中实现了一个播放器,我不想在所有控制器中包含页眉和页脚,因为这会在标题刷新时阻止播放器播放。
答案 0 :(得分:2)
我在项目中做的是在请求中查找pjax头,如果pjax头存在则加载内容模板,否则加载完整模板,这是我在perl中的相应代码,希望它有帮助< / p>
sub tour {
my $self = shift;
return $self->render(
template => 'static/tour',
layout => $self->req->headers->header('X-PJAX') ? 'content_header' : 'full_width',
);}
你可以在php中实现相同的