【问题标题】:Multiple slug types with cakePHP使用 cakePHP 的多种 slug 类型
【发布时间】:2013-05-13 02:59:03
【问题描述】:

我正在自己编写基础内容的 CMS。 我用 Node 和 NodeType 逻辑实现了它的内容部分。 (每个 Node 都属于一个 NodeType) Nodes 和 NodeTypes 表中都有 Slug 字段,我在路由器中写了这两条路由:

Router::connect('/:typeslug',array('controller' => 'nodetypes', 'action' => 'view'),array('pass'=>array('typeslug')));
Router::connect('/:typeslug/:nodeslug',array('controller' => 'nodes', 'action' => 'view'),array('pass'=>array('typeslug','nodeslug')));

它将实现这样的内容:http://domain.ext/article/my-custom-article
第一个问题:这是正确且正常的方法吗?
第二个问题:使用 wordpress 之类的复杂 slugging 的解决方案是什么? (例如,使用存档日期之类的 slug,例如:http://mydomain.ext/2013/01/01/article/....
更重要的是能够在管理部分中切换 slug 类型。

感谢指导

【问题讨论】:

    标签: cakephp seo slug


    【解决方案1】:

    问题 1

    这是一种正确且正常的方法吗?

    是的,没关系,看看与 CakePHP 应用程序捆绑在一起的 PagesController (documentation)。

    问题 2

    使用 wordpress 之类的复杂 slugging 的解决方案是什么? (例如,使用像存档日期这样的 slug:http://mydomain.ext/2013/01/01/article/....

    在这种特殊情况下,您必须在 routes.php 文件中设置额外的路由。

    例如:

    Router::connect(
        '/article/:year/:month/:day/*', array('controller' => 'articles')
    );
    

    http://mydomain.ext/article/2013/01/01 的任何请求都将被路由到您的文章控制器中的以下操作:

    public function index($year, $month, $day){
        ...
    }
    

    请注意,我稍微颠倒了您的 URL,因为它避免了对不存在的控制器的模棱两可的请求。

    问题 3

    ...更重要的是能够在管理部分中切换 slug 类型。

    在这种情况下,您可以根据另一个配置值打开和关闭路由。您必须专门为您的应用程序设置一个配置文件,但您可以在运行时对其进行修改:

    Routing.php:

    // load your routing configuration 
    Configure::load('application_config', 'default');
    // setup your routes
    if(empty(Configure::read('routing_1')){
        // default routing
        ...
    }else{
        // routing 1
        ...
    }
    

    AdministrationController.php:

    public function someAction(){
        // persist configuration to file
        Configure::dump('application_config', 'default', array('routing_1' => true));
    }
    

    有关详细信息,请查看文档中的 Reading and Writing Configuration Files 部分。

    我希望这会为您指明正确的方向。

    【讨论】:

    • 感谢德莱尼先生的关注和解决方案
    猜你喜欢
    • 1970-01-01
    • 2013-01-18
    • 1970-01-01
    • 1970-01-01
    • 2015-01-08
    • 1970-01-01
    • 2016-09-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多