Внедрение Pjax в общую структуру кодирования нижнего колонтитула

Я разрабатываю проект с помощью codeigniter, который имеет общий верхний и нижний колонтитулы. Используя pjax, я могу динамически изменять только содержимое, не нарушая верхний и нижний колонтитулы. Также URL-адрес изменяется относительно контроллера. Ниже приведена моя озабоченность по поводу аналогии URL и SEO.

Мой контроллер домашней страницы по умолчанию загружает заголовок, индексную страницу и нижний колонтитул, как показано ниже.

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), а только div содержимого pjax заменяется/обновляется содержимым, а верхний и нижний колонтитулы остаются прежними.

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

Это отлично работает, когда элементы меню перемещаются с домашней страницы, поскольку изначально загружаются верхний и нижний колонтитулы. Но что, если мы напрямую нажмем на URL-адрес (например, http://domain.com/main/bandDirectory). Этот контроллер не содержит верхнего и нижнего колонтитула и загружает только то содержимое, которое разбивает страницу на части! Это станет серьезной проблемой, если поисковые системы проиндексируют эти URL-адреса. Как побороть эту проблему?

P.S. Поскольку я реализую проигрыватель в заголовке, я не хочу включать верхний и нижний колонтитулы во все контроллеры, так как это остановит воспроизведение проигрывателя при обновлении заголовка.


person Ram    schedule 17.12.2013    source источник


Ответы (1)


Что я сделал в нашем проекте, так это поиск заголовка 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

person Raunak Kathuria    schedule 17.12.2013
comment
Эй... Это сработало! Почему-то я пропустил эту часть заголовка в документации Pjax. Ссылка ниже помогла мне реализовать в php/codeigniter. Спасибо :) goldhawklabs.com/home/post/using-pjax-with -программист - person Ram; 18.12.2013