我正在使用CakePHP v2.42&想在页面分页中拥有SEO友好的URL。
我目前的分页就像
http://www.website.com/ubs/page/page:2
如何更改为
http://www.website.com/ubs/page/2
我的控制器
<?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'));
编辑 - 添加更多问题
@kicaj的回答完全正确的路由器&amp;控制器。但是,导航链接仅在第一页上正确显示。
在第一页导航链接中显示如此正确
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 :(得分:0)
试试这个:
Router::connect('/ubs/page/:page', array(
'controller' => 'ubs',
'action' => 'index'
), array(
'pass' => array(
'page'
),
'page' => '[\d]+'
));
并在ubs控制器的索引操作中添加代码:
public function index($page = 1) {
// ...
$this->request->params['named']['page'] = $page;
// ...
}
答案 1 :(得分:0)
在您的Paginator Helper中,您可以通过设置一些选项来选择合适的友好网址
url
分页操作的网址。 'url'也有一些子选项:
sort
记录按顺序排列的键。direction
排序的方向。默认为'ASC'。page
要显示的页码。这里有一个例子。
$this->Paginator->options(array(
'url' => array(
'sort' => 'email', 'direction' => 'desc', 'page' => 6,
'lang' => 'en'
)
));