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

时间:2016-03-16 07:23:20

标签: codeigniter

我正在尝试下面的网址格式

页面 -

  

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中进行任何更改吗?

2 个答案:

答案 0 :(得分:0)

我有解决问题的方法:)

1)如果您使用确定优先级的HMVC(https://bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc/),例如(示例模块:前面):

  • page_name(控制器:页面)
  • product_name(控制器:产品)
  • 类别(控制器:类别)

接下来的路线:

$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";

对不起我的英语,但我试过......

答案 1 :(得分:0)

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

分类:
使控制器的名称与您的类别名称相同。 子类别是类别控制器中的方法。 产品名称是您通过锚点在网址上传递的产品的标识。

我想这应该可以胜任。