如何查找当前页面的路线?

时间:2013-06-26 13:12:50

标签: php opencart

我可以在控制器中使用一行代码来确定当前页面的路径吗?

例如,我想找到包含SEO网址https://example.com/desktops的网页路由(这应返回路由product/category)。

同样,https://example.com/index.php?route=product/product&path=18&product_id=47等网址应将路由返回为product/product

3 个答案:

答案 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_idcategory_id,{{1} }和information_id)以及由manufacturer_id分隔的id值。

在您的桌面示例中,它类似于=。从那里,你需要制定路线

您可以在文件category_id=20

中找到OpenCart执行此操作的确切方式

答案 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';
}