2014-01-04 3 views
0

Я использую CakePHP v2.42 & хотел бы иметь дружественный URL-адрес в поисковой странице страницы.SEO Дружественный URL-адрес в CakePHP pagination

Мой текущий нумерацией страниц, как

http://www.website.com/ubs/page/page:2

Что нужно сделать, чтобы изменить к

http://www.website.com/ubs/page/2

My Controller является

<?php 
    class UbsController extends AppController { 

    public $helpers = array('Html', 'Form'); 

    public function index() { 

    $this->paginate = array(
    'limit' => 100, 
    ); 

    $ubs = $this->paginate(); 

    $this->set('ubs', $ubs); 
}} 

Мой маршрутизатор

Router::connect('/ubs', array('controller' => 'ubs', 'action' => 'index')); 
Router::connect('/ubs/page/*', array('controller' => 'ubs', 'action' => 'index')); 

EDIT - ДОБАВЬТЕ ВОПРОС

Ответа на этот вопрос @kicaj совершенно правильно для маршрутизатора & контроллера. Однако навигационная ссылка отображается только на первой странице.

В первой странице навигации связь показать, как это, которое является правильным

http://www.website.com/ubs/ 
http://www.website.com/ubs/page/2/ 
http://www.website.com/ubs/page/3/ 

Но Навигационная ссылка показать, как это во второй/третьей странице

http://www.website.com/ubs/index/2/ 
http://www.website.com/ubs/index/2/page:3/ 

Я думаю страницы нужно отредактировать index.ctp файл, но не уверен, что делать.

Моя текущая ссылка навигации в index.ctp шоу как этот

$paginator = $this->Paginator; 
$paginator->prev("« Prev"); 
$paginator->numbers(array('modulus' => 200, 'separator' => ' ')); 
$paginator->next("Next »"); 

Что изменить, чтобы исправить это

ответ

0

Попробуйте это:

Router::connect('/ubs/page/:page', array(
    'controller' => 'ubs', 
    'action' => 'index' 
), array(
    'pass' => array(
     'page' 
    ), 
    'page' => '[\d]+' 
)); 

и указательным действия в УБС контроллера оных код:

public function index($page = 1) { 
    // ... 
    $this->request->params['named']['page'] = $page; 
    // ... 
} 
+0

TQVM ... Код работы идеально подходит для маршрутизатора и контроллера. Однако ссылка на навигацию отображается только на первой странице. Вторая и последующая страница не отображаются правильно. Я редактирую вопрос, чтобы описать проблему. Пожалуйста, посмотрите. – user3159693

+0

Попробуйте добавить в поле зрения перед $ paginator-> prev(): '$ paginator-> options (array ('url' => array ('controller' => 'ubs', 'action' = > 'index'))); ' – kicaj

+0

Я пытаюсь понять: ваши ссылки не сгенерированы правильно, но когда вы помещаете адрес в браузер (например, например: http://www.website.com/ubs/page/3/), то разбивка на страницы работает? – kicaj

0

В вашем Paginator Helper вы можете выбрать правильный дружественный URL вы хотите с установкой некоторых опций

  • url URL-адрес действия Разбиение. У 'url' также есть несколько опционов:
    • sort Ключ к сортировке записей.
    • direction Направление сортировки. По умолчанию используется «ASC».
    • page Номер страницы для отображения.

Там вот пример.

$this->Paginator->options(array(
    'url' => array(
     'sort' => 'email', 'direction' => 'desc', 'page' => 6, 
     'lang' => 'en' 
    ) 
)); 

источник: Modifying the options PaginatorHelper uses

+0

TQ для оказания помощи. Мне удается получить решение от ответа от kicaj выше – user3159693

Смежные вопросы