Hola @sergioseller97, el problema que describes es un clásico al intentar extender el sistema de rutas de PrestaShop 1.7.x sin un enfoque modular. Tu override de addRoute está tratando de modificar la definición de una ruta existente o añadir una nueva de una forma que no se integra bien con el ciclo de vida del Dispatcher. El método addRoute se usa para registrar rutas, no para reescribir la lógica de Link::getProductLink o Dispatcher::match directamente.
El Dispatcher de PrestaShop 1.7.8.7 carga las rutas en un orden específico, y tu override puede estar añadiendo la ruta después de que ya se hayan inicializado las principales, o tu patrón puede ser demasiado genérico y entrar en conflicto. Además, Link::getProductLink no buscará automáticamente tu nueva ruta si no le indicas explícitamente qué patrón usar, o si tu override no se ha diseñado para generar enlaces que encajen con tu nueva ruta.
La forma más robusta de hacer esto es a través de un módulo, usando el hook actionDispatcher o hookModuleRoutes y gestionando la lógica de generación y parsing de la URL en un solo lugar. Si bien es posible hacerlo con overrides combinando Link.php y Dispatcher.php, es muy propenso a errores y roturas con cada actualización, especialmente con las transiciones a Symfony en algunas partes del back office.
Aquí tienes un ejemplo simplificado de cómo un módulo podría registrar una ruta personalizada de forma más segura (esto iría en el método install de tu módulo o un controlador específico que se ejecuta una vez, y necesitarías limpiar la caché de rutas después):
// Ejemplo en el método install() de un módulo
$routes = [
'product_custom_branded_url' => [
'pattern' => '{category_rewrite}/{manufacturer_rewrite}/{product_rewrite}.html',
'controller' => 'product',
'keywords' => [
'id_product' => ['regexp' => '[0-9]+'],
'product_rewrite' => ['regexp' => '[_a-zA-Z0-9\x{00A0}-\x{D7FF}\x{F900}-\x{FFEF}]+'],
'category_rewrite' => ['regexp' => '[_a-zA-Z0-9\x{00A0}-\x{D7FF}\x{F900}-\x{FFEF}]+'],
'manufacturer_rewrite' => ['regexp' => '[_a-zA-Z0-9\x{00A0}-\x{D7FF}\x{F900}-\x{FFEF}]+'],
Este snippet muestra cómo añadir una ruta de forma declarativa. Sin embargo, para que Link::getProductLink genere URLs con este nuevo patrón y el Dispatcher las reconozca correctamente, necesitarías una lógica más profunda que gestione tanto la generación como el parseo de los parámetros manufacturer_rewrite y category_rewrite para resolver id_product, id_category y id_manufacturer. Esto implica overrides más complejos de Link y Dispatcher o, lo que es mucho más seguro y mantenible, utilizar un módulo preparado para url limpias url bonitas. Un módulo dedicado se encarga de toda esta lógica de forma profesional, asegurando compatibilidad y evitando conflictos en futuras actualizaciones. Te ahorrará muchos dolores de cabeza.