我可以在控制器中使用一行代码来确定当前页面的路径吗?
例如,我想找到包含SEO网址https://example.com/desktops
的网页路由(这应返回路由product/category
)。
同样,https://example.com/index.php?route=product/product&path=18&product_id=47
等网址应将路由返回为product/product
。
答案 0 :(得分:12)
说实话,正确答案是$this->request->get['route'];
。
为了捕获当前路由,您可以在$this->request->get['route'];
函数的catalog/controller/common/header.php
文件中使用index()
。 Header.php
几乎是任何前端输出的一部分(据我所知,现在你不确定在http://example.com/desktops
中使用了什么控制器,因此你需要在任何情况下都可以运行代码的正确位置)。
SEO模块不会取消设置请求对象的这一部分。另外,请记住,在OpenCart代码生成过程中,$_GET
数组与$this->request->get
数组不同。当SEO模块运行时,你不会在$ _GET超全局php数组中捕获当前路径(在“路径/控制器/动作”格式中),但是你可以通过使用准备好的$this->request->get
数组来捕获任何控制器由OpenCart引擎为您服务。
答案 1 :(得分:0)
这是通过查询特定关键字的url_alias
表来为您提供标准设置附带的四个ID之一(product_id
,category_id
,{{1} }和information_id
)以及由manufacturer_id
分隔的id值。
在您的桌面示例中,它类似于=
。从那里,你需要制定路线
您可以在文件category_id=20
答案 2 :(得分: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';
}