是否有一行代碼可以在控制器中使用,以確定當前頁面的路徑?如何查找當前頁面的路線?
例如,我想找到SEO頁面的路徑https://example.com/desktops
(這應該返回路線product/category
)。
同樣,網址如https://example.com/index.php?route=product/product&path=18&product_id=47
應該返回路線爲product/product
。
是否有一行代碼可以在控制器中使用,以確定當前頁面的路徑?如何查找當前頁面的路線?
例如,我想找到SEO頁面的路徑https://example.com/desktops
(這應該返回路線product/category
)。
同樣,網址如https://example.com/index.php?route=product/product&path=18&product_id=47
應該返回路線爲product/product
。
這是通過查詢url_alias
表中特定的關鍵字,給你四個ID的附帶的標準設置(product_id
,category_id
,information_id
和manufacturer_id
)與它一起的一個完成的值id由=
分離。
在你的桌面例子,它會是這樣的category_id=20
。從那裏,你需要制定出路線
你可以找到確切的方式Opencart的執行此文件中/catalog/controller/common/seo_url.php
編輯:
在控制器,我們有$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';
}
要誠實,正確的答案是$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
數組捕獲任何控制器發動機。
這不會對SEO關鍵字工作 –
@Jay吉爾福特,這是一個錯誤。我的意思是'_route_'。我在var_export($ _ REQUEST)中看到了這個鍵;在我的index.php –
'_route_'會給你他們關鍵字,但是這仍然沒有提供實際的路線 –