如何在codeigniter中维护页面、类别、子类别和产品的url?

如何在codeigniter中维护页面、类别、子类别和产品的url?,codeigniter,Codeigniter,我正在尝试做如下URL格式 第页- www.example.com/page-name 类别 www.example.com/category-name/sub-category-name 对于产品 www.example.com/category-name/sub-category-name/product-name 或 www.example.com/product-name 这可能吗?如果是,意味着我的控制器和功能应该如何?我应该对routes.php进行任何更改吗?我有解决您问题的方法:

我正在尝试做如下URL格式

第页-

www.example.com/page-name

类别

www.example.com/category-name/sub-category-name

对于产品

www.example.com/category-name/sub-category-name/product-name

www.example.com/product-name


这可能吗?如果是,意味着我的控制器和功能应该如何?我应该对routes.php进行任何更改吗?

我有解决您问题的方法:)

1) 例如,如果使用确定优先级的HMVC()(示例模块:front):

  • 页面名称(控制器:第页)
  • 产品名称(控制器:产品)
  • 类别(控制器:类别)
下一条路线:

$route['(:any)'] = function ($slug)
{
        return 'front/page/show/'.$slug;
};
下一个签入控制器页面检查存在一个链接。如果不存在,则运行下一个控制器产品。例如:

...
public function show($slug='')
    {
    $this->load->model('page_m');
    $page = $this->page_m->GetRowBySlug($slug)->row();
        if(!$page) {
            echo modules::run('front/product/show', $slug);
            exit;
        }
...
控制器产品中的下一个添加到相同的,但如果不存在链接,则运行下一个控制器等:

...
public function show($slug='')
    {
    $this->load->model('product_m');
    $page = $this->product_m->GetRowBySlug($slug)->row();
        if(!$page) {
            echo modules::run('front/categories/show', $slug);
            exit;
        }
...
2) 如果不使用HMVC,则可以运行其他控制器:

...
$this->load->library('../controllers/product');
$this->product->show($slug)
...
你必须改变路线:

$route['(:any)'] = "page/show/$1";
对不起,我说的是英语,但我尝试了…

查看页面:
使控制器的名称与页面的名称相同

对于类别:
使控制器的名称与类别的名称相同。 子类别是类别控制器中的方法。 产品名称是通过锚在url上传递的产品的标识

我想这应该可以