2013-06-26 59 views
6

是否有一行代碼可以在控制器中使用,以確定當前頁面的路徑?如何查找當前頁面的路線?

例如,我想找到SEO頁面的路徑https://example.com/desktops(這應該返回路線product/category)。

同樣,網址如https://example.com/index.php?route=product/product&path=18&product_id=47應該返回路線爲product/product

回答

0

這是通過查詢url_alias表中特定的關鍵字,給你四個ID的附帶的標準設置(product_idcategory_idinformation_idmanufacturer_id)與它一起的一個完成的值id由=分離。

在你的桌面例子,它會是這樣的category_id=20。從那裏,你需要制定出路線

你可以找到確切的方式Opencart的執行此文件中/catalog/controller/common/seo_url.php

0

編輯:

在控制器,我們有$this->request->get['route']

seo_url.php:

if (isset($this->request->get['product_id'])) { 
    $this->request->get['route'] = 'product/product'; 
} elseif (isset($this->request->get['path'])) { 
    $this->request->get['route'] = 'product/category'; 
} elseif (isset($this->request->get['manufacturer_id'])) { 
    $this->request->get['route'] = 'product/manufacturer/info'; 
} elseif (isset($this->request->get['information_id'])) { 
    $this->request->get['route'] = 'information/information'; 
} 
+1

這不會對SEO關鍵字工作 –

+1

@Jay吉爾福特,這是一個錯誤。我的意思是'_route_'。我在var_export($ _ REQUEST)中看到了這個鍵;在我的index.php –

+0

'_route_'會給你他們關鍵字,但是這仍然沒有提供實際的路線 –

12

要誠實,正確的答案是$this->request->get['route'];

爲了趕上當前路線,您可以在index()函數的catalog/controller/common/header.php文件中使用$this->request->get['route'];Header.php是實際上任何前端輸出的一部分(據我所知,現在你不確定在http://example.com/desktops中使用了什麼控制器,所以你需要在任何情況下都可以運行你的代碼的地方)。

SEO模塊不會取消設置請求對象的這部分內容。另外,請記住,在OpenCart代碼生成過程中,$_GET數組和$this->request->get數組是不一樣的東西。在SEO模塊運行時,您不會捕獲$ _GET超全球php數組中的當前路徑(以「路徑/控制器/操作」格式),但您可以使用OpenCart爲您準備的$this->request->get數組捕獲任何控制器發動機。