OpenCart:如何使用完整的类别路径制作产品URL

时间:2014-10-18 21:15:40

标签: php url opencart

我店铺的产品现在有这样的网址:

  

example.com/category1/product1

  

example.com/category1/subcategory1/product1

它的同一产品只分为两类。 URL取决于您是否来自 cateogry1 subcategory1

我想强制opencart总是转到example.com/category1/subcategory1/product1(最深的子类别)。

你知道怎么做吗?我没有找到任何扩展名。我可能不得不改变/catalog/controller/common/seo_url.php,但我不知道该改变什么,我也不想制造它。

我在OpenCart 1.5.6上运行。

2 个答案:

答案 0 :(得分:1)

转到管理面板并打开类别表单,然后删除类别和子类别的seo关键字。

然后您将获得该类别的完整路径。

答案 1 :(得分:0)

您需要添加一些代码才能在没有扩展名的情况下执行此操作。

在controller / seo_url.php中添加此功能

public function getFullProductPath($product_id) {

    $path = array();
    $categories = $this->db->query("SELECT c.category_id, c.parent_id FROM " . DB_PREFIX . "product_to_category p2c LEFT JOIN " . DB_PREFIX . "category c ON (p2c.category_id = c.category_id) WHERE product_id = '" . (int)$product_id . "'")->rows;

    foreach($categories as $key => $category)
    {
        $path[$key] = '';
        if (!$category) continue;
        $path[$key] = $category['category_id'];

        while ($category['parent_id']){
            $path[$key] = $category['parent_id'] . '_' . $path[$key];
            $category = $this->db->query("SELECT category_id, parent_id FROM " . DB_PREFIX . "category WHERE category_id = '" . $category['parent_id']. "'")->row;
        }

        $path[$key] = $path[$key];
    }

    if (!count($path)) return '';

    // wich one is the largest ?
    $whichone = array_map('strlen', $path);
    asort($whichone);
    $whichone = array_keys($whichone);

    $whichone = array_pop($whichone);

    return $path[$whichone];
}