If you have a manufacturer "Sony" for example: http://www.opencart.com/sony.html
The default links to products show as: http://www.opencart.com/apple.html/iPhone-4S.html
The fix below will replace the URL's with the category/product URL, example:
http://www.opencart.com/smart-phones/iPhone-4S.html
OPEN FILE ../catalog/controller/common/seo_url.php
FIND AT APPROX. LINE 2
Code: Select all
class ControllerCommonSeoUrl extends Controller {
Code: Select all
/* BEGIN: Manufacturer SEO URL Fix (1 of 2) */
public function get_cat_alias($cid)
{
$cid=intval($cid);
$query='
SELECT
c.parent_id,
a.keyword
FROM
'.DB_PREFIX.'category AS c,
'.DB_PREFIX.'url_alias AS a,
'.DB_PREFIX.'product_to_category AS pc
WHERE
c.category_id='.$cid.' && a.query="category_id='.$cid.'"
LIMIT 1
';
$result=$this->db->query($query);
$results=array();
foreach($result->rows as $row)
{
if(intval($row['parent_id'])!==0)$results[]=$this->get_cat_alias($row['parent_id']);
if(isset($row['keyword']))$results[]=$row['keyword'];
}
return $results;
}
function output_cat_alias($array)
{
$result=array();
foreach($array as $keyword)
{
if(is_array($keyword))
{
$result[]=$this->output_cat_alias($keyword);
}else
{
$result[]=$keyword;
}
}
return implode('',$result);
}
/* END: Manufacturer SEO URL Fix (1 of 2) */
Code: Select all
if (($data['route'] == 'product/product' && $key == 'product_id') || (($data['route'] == 'product/manufacturer/product' || $data['route'] == 'product/product') && $key == 'manufacturer_id') || ($data['route'] == 'information/information' && $key == 'information_id')) {
Code: Select all
/* BEGIN: Manufacturer SEO URL Fix (2 of 2) */
if($key == 'product_id')
{
$query='
SELECT
c.parent_id,
c.category_id
FROM
'.DB_PREFIX.'category AS c,
'.DB_PREFIX.'url_alias AS a,
'.DB_PREFIX.'product_to_category AS pc
WHERE
pc.product_id='.$value.' &&
pc.category_id=c.category_id
LIMIT 1
';
$cat_current=$this->db->query($query);
$query='
SELECT
a.keyword
FROM
'.DB_PREFIX.'url_alias AS a
WHERE
a.query="category_id='.$cat_current->row['category_id'].'"
LIMIT 1
';
$cat_current_key=$this->db->query($query);
$url=$this->get_cat_alias($cat_current->row['parent_id']);
$url=array(0=>$url,1=>$cat_current_key->row['keyword']);
$url='/'.$this->output_cat_alias($url);
}
/* END: Manufacturer SEO URL Fix (2 of 2) */