проблема действительно решается через схемы. как например route=product/manufacturer для списка производителей, а route=product/manufacturer/product для товаров производителя (начиная с версии 1.5.4 product/manufacturer/info), но до версии OpenCart 1.5.5 более общая схема (более короткая) перекрывает дочерние.
что бы исправить этот момент нужно в файле catalog/model/design/layout.php строку
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "layout_route WHERE '" . $this->db->escape($route) . "' LIKE CONCAT(route, '%') AND store_id = '" . (int)$this->config->get('config_store_id') . "' ORDER BY route ASC LIMIT 1");
заменить на
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "layout_route WHERE '" . $this->db->escape($route) . "' LIKE CONCAT(route, '%') AND store_id = '" . (int)$this->config->get('config_store_id') . "' ORDER BY route DESC LIMIT 1");
ну а в админке создать схему производителей с route = product/manufacturer/product для товаров производителя (начиная с версии 1.5.4 product/manufacturer/info) и добавить фильтр на эту схему