Hola @fernandodigital, la preocupación de @miriamdev es muy acertada. Sobrescribir Link.php para una funcionalidad tan central como la estructura de URLs en PrestaShop 9.1.0 es una solución muy arriesgada. El sistema de enrutamiento del Back Office ahora se basa en Symfony 6.4, y cualquier cambio directo en las clases core de generación de enlaces puede generar inconsistencias en la tienda y en la administración, afectando al SEO y a la experiencia del usuario.
Tu intento de str_replace es comprensible, pero no considera el contexto completo de cómo PrestaShop construye y parsea las URLs para diferentes controladores (productos, categorías, CMS, etc.) ni cómo el Dispatcher las maneja. Una solución manual aquí podría requerir reescribir partes del Dispatcher o crear reglas de enrutamiento muy complejas.
Si bien no puedo darte una solución de 4-8 líneas de código que sea robusta para este problema específico, ya que requiere una lógica profunda de gestión de rutas, puedo mostrarte un ejemplo de cómo un módulo podría intentar interceptar el proceso de generación de enlaces, aunque esto subraya la complejidad:
// En un módulo custom, dentro de un método hook para manipular el Dispatcher
public function hookActionDispatcher($params)
{
// Este es un ejemplo conceptual y NO es una solución completa y robusta.
// La complejidad real implica modificar o añadir rutas de Symfony directamente.
$currentUri = $_SERVER['REQUEST_URI'];
$defaultLangIso = Configuration::get('PS_LANG_DEFAULT_ISO');
// Si la URL contiene el ISO del idioma por defecto y no debería
if (strpos($currentUri, '/' . $defaultLangIso . '/') === 0) {
// Aquí se necesitaría una lógica avanzada para determinar la ruta correcta
Como ves, la implementación robusta de esta característica es muy compleja y va más allá de un pequeño snippet. Requiere manejar correctamente el Dispatcher, las rutas de Symfony y las redirecciones 301 para evitar problemas de SEO. Para una funcionalidad tan específica y crucial para el SEO, lo más recomendable y mantenible es utilizar un módulo dedicado que ya esté diseñado para gestionar estas excepciones en el enrutamiento. Un buen ejemplo es el módulo Eliminar el código ISO de idioma de las URL, que se encarga de toda esta complejidad de forma segura y compatible con PrestaShop 9.