如何在OpenCart中创建自定义SEO友好的URL?

如何在OpenCart中自定义系统URL?例如,我希望将http://example.com/index.php?route=checkout/cart显示为http://example.com/cart

我知道OpenCart为产品,类别,制造商和信息页面提供了SEO URL,但其他任何东西似乎都没有内置的东西(至少在1.5.0版之前)。

回答:

事实证明,可以通过相对简单的更改单个文件来完成。没有.htaccess重写规则,只需修补catalog / controller / common /

seo_url.php文件,然后将漂亮的URL添加到现有数据库表中。


Index: catalog/controller/common/seo_url.php

===================================================================

--- catalog/controller/common/seo_url.php (old)

+++ catalog/controller/common/seo_url.php (new)

@@ -48,7 +42,12 @@

$this->request->get['route'] = 'product/manufacturer/product';

} elseif (isset($this->request->get['information_id'])) {

$this->request->get['route'] = 'information/information';

- }

+ } else {

+ $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_alias WHERE keyword = '" . $this->db->escape($this->request->get['_route_']) . "'");

+ if ($query->num_rows) {

+ $this->request->get['route'] = $query->row['query'];

+ }

+ }

if (isset($this->request->get['route'])) {

return $this->forward($this->request->get['route']);

@@ -88,7 +87,15 @@

}

unset($data[$key]);

- }

+ } else {

+ $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_alias WHERE `query` = '" . $this->db->escape($data['route']) . "'");

+

+ if ($query->num_rows) {

+ $url .= '/' . $query->row['keyword'];

+

+ unset($data[$key]);

+ }

+ }

}

}

需要两个编辑。第一个扩展index()功能,以在url_alias表中查找是否有 任何

关键字匹配$this->request->get['_route_']

第二个扩展了rewrite()功能,可以在url_alias表中查找 所有 路线,而不仅仅是产品,制造商和信息页的路线。


INSERT INTO `url_alias` (`url_alias_id`, `query`, `keyword`) VALUES

(NULL, 'checkout/cart', 'cart');


而已。http://example.com/cart应该返回与http://example.com/index.php?route=checkout/cart相同的内容,并且OpenCart应该识别$this->url->link('checkout/cart');并返回指向漂亮URL

http://的链接example.com/cart

以上是 如何在OpenCart中创建自定义SEO友好的URL? 的全部内容, 来源链接: utcz.com/qa/427111.html

回到顶部