在 CakePHP 中保留父 slug
Posted
技术标签:
【中文标题】在 CakePHP 中保留父 slug【英文标题】:Retaining parent slugs in CakePHP 【发布时间】:2011-11-29 16:04:36 【问题描述】:我正在尽可能高效地在 Cakephp 中尝试对 SEO 友好的 URL,我已经设法使用当前格式,每个示例都使用函数 view($slug),除了第一个使用函数 index() 的示例。
/类别/
/类别/书籍/
/categories/books/it-and-computing/
但是,如果 IT 和计算有一个子类别“Web 开发”呢?我希望 URL 变为:
/categories/books/it-and-computing/web-development/
如果不创建太多路线,我不确定如何做到这一点。到目前为止,这是我的路线代码:
Router::connect('/categories/', array('controller' => 'categories', 'action' => 'index'));
Router::connect('/categories/:slug', 数组('控制器' => '类别','动作' => '视图'), 数组('pass' => 数组('slug')) );
Router::connect('/categories/:parent/:slug', 数组('控制器' => '类别','动作' => '视图'), 数组('通过' => 数组('父','slug')) );
任何帮助将不胜感激
亲切的问候
斯蒂芬
【问题讨论】:
【参考方案1】:// in routes.php
Router::connect('/categories/:row:lastslash',array('controller' => 'settings', 'action' => 'show',),array(
'pass'=>array('row'),
'row'=>'.*?',
'lastslash'=>'\/?'
));
//in controller
function show($row = "")
if($row)
$categories = split('/',$row);
?><pre><? print_r($categories);?></pre><?die();
else
die('do something else');
/categories/books/computing/web-development/cakephp/
结果:
Array
(
[0] => books
[1] => computing
[2] => web-development
[3] => cakephp
)
/类别/
结果:
do something else
/类别/书籍
结果:
Array
(
[0] => books
)
【讨论】:
我也希望这个问题能得到更多的答案。适用于 n 级子类别的东西。 以上行不通,我想你误解了这个问题。网站需要保留 URL 中的完整历史记录,有点像面包屑。 /categories/books/computing/web-development/cakephp/等 这看起来正是我要找的东西,我现在不能尝试,但我稍后会尝试。非常感谢 sukinsan :) 我会“投票”你,但我对这个网站太陌生了。干杯以上是关于在 CakePHP 中保留父 slug的主要内容,如果未能解决你的问题,请参考以下文章