Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php OpenCart:如何使用完整类别路径创建产品URL_Php_Url_Opencart - Fatal编程技术网

Php OpenCart:如何使用完整类别路径创建产品URL

Php OpenCart:如何使用完整类别路径创建产品URL,php,url,opencart,Php,Url,Opencart,我的店铺中的产品现在有如下URL: example.com/category1/product1 或 example.com/category1/subcategory1/product1 这是一个相同的产品,只分为两类。URL取决于您是从Category1还是从子类别1 我想强制opencart始终转到example.com/category1/subcategory1/product1(最深的子类别) 你知道怎么做吗?我没有找到它的分机。我可能不得不更改/catalog/controller

我的店铺中的产品现在有如下URL:

example.com/category1/product1

example.com/category1/subcategory1/product1

这是一个相同的产品,只分为两类。URL取决于您是从Category1还是从子类别1

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

你知道怎么做吗?我没有找到它的分机。我可能不得不更改
/catalog/controller/common/seo_url.php
,但我不确定要更改什么,我不想阻止它


我正在OpenCart 1.5.6上运行。

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


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

您需要添加一些代码来完成此操作,而无需扩展

在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];
}

@JayGilford谢谢,但是还有免费的解决方案吗?我想我所需要的只是在seo_url.phpposible的复制中做一些小的更改