в самом контроллере категории, я бы поставил чекер на проверку category_id и соответственно, перед самой строкой, которая выводит в документ аргумент "canonical" - поставил бы принудительный реврайт или вручную развибку урла с указанием родительской категории (если известно) и же в сам аргумент - отправлял path, на практике, это имеет примерно следующий вид для файла: catalog\controller\product\category.php ... нахожу строку:
$category_info = $this->model_catalog_category->getCategory($category_id);
после неё добавляю:
$mine_canonical = $this->model_catalog_category->getCatPath($category_id);
а после:
$this->document->setKeywords($category_info['meta_keyword']);
добавляю вывод корректного canonical:
if ($page > 1) {
$this->document->addLink($this->url->link('product/category', 'path=' . $mine_canonical, true), 'canonical');
}
но прежде, необходимо в файл модели, добавить выборку родительского пути по категории, для этого добавляем следующий код в файл:
catalog\model\catalog\category.php перед строкой:
public function getCategoryFilters($category_id) {
вот такую функцию выборки:
/* ALarik method get category path
* OC v 2.x and grater
* Licensed to rocketlayer SEO module
*/
public function getCatPath($category_id) {
$query = $this->db->query("SELECT GROUP_CONCAT(`path_id` ORDER BY `level` SEPARATOR '_') AS trix FROM `" . DB_PREFIX . "category_path` WHERE category_id = '" . (int)$category_id . "' GROUP BY category_id");
return $query->num_rows ? $query->row['trix'] : 0;
}
вуаля, имеем путь категории с привязаной родительской, приятного пользования, если помог - ставь лайк, тебе не убудет, а мне приятно !