2016-03-16 55 views
0

我試圖做的URL格式如下如何在頁面,類別,子類別和產品中維護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-名稱

這是可能的嗎?如果是的話意味着我的控制器和功能應該如何?我應該在routes.php中進行任何更改嗎?

回答

0

我有解決你的問題:)

1)如果你使用HMVC(https://bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc/),對於例如確定優先級(例如模塊:前):

  • PAGE_NAME(控制器:頁)
  • PRODUCT_NAME(控制器:產品)
  • 類別(控制器:類別)

接下來的路線:

$route['(:any)'] = function ($slug) 
{ 
     return 'front/page/show/'.$slug; 
}; 

next check in controller頁面檢查是否存在鏈接。如果不存在,則運行下一個控制器產品。例如:

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

對不起,我嘗試了...

0

頁數:
使您的控制器的名稱與您的頁面名稱相同。

for Category:
使控制器的名稱與您的類別的名稱相同。 子類別是類別控制器中的方法。 產品名稱是您通過錨點傳遞給網址的產品的標識。

我想這應該做的工作。

相關問題