URL's limpias en PrestaShop
La optimización SEO es esencial para cualquier tienda online exitosa. Un aspecto clave es ofrecer URLs amigables, limpias y sin IDs numéricos que no aportan valor para el posicionamiento ni para la experiencia del usuario.
PrestaShop 8.x gestiona las URLs con IDs por defecto, lo cual no es lo ideal para SEO. Este post presenta un módulo gratis para PrestaShop basado en un override avanzado de la clase Dispatcher.php que elimina estos IDs de las URLs de productos, categorías, CMS, fabricantes y proveedores, generando enlaces limpios, claros y totalmente funcionales, adaptados al ecosistema multitienda y multiidioma de PrestaShop.
Tutorial completo: Instalación paso a paso del módulo
¿Qué es y por qué utilizar este módulo gratis para PrestaShop?
El motor de PrestaShop utiliza por defecto URLs que incluyen IDs internos, por ejemplo:
tusitio.com/productos/15-camiseta-roja.html
Estos IDs no contribuyen al SEO y comprometen la claridad para los usuarios y buscadores. Este módulo gratis para PrestaShop reemplaza la lógica de generación y resolución de URLs para que utilice solo el slug del producto y su categoría, logrando URLs limpias como:
tusitio.com/camisetas/camiseta-roja.html
Al hacerlo, se mejora la experiencia, la confianza del usuario y el posicionamiento SEO.
Características del módulo gratis para PrestaShop
/override/classes/Dispatcher.phpAspectos técnicos del override Dispatcher.php
Este módulo gratis para PrestaShop sobrescribe las siguientes funciones clave del Dispatcher:
loadRoutes
Redefine las reglas para que las URLs de producto contengan {category}/{rewrite}.html y las de categoría sean {rewrite}, entre otras.
getController
- Intercepta la URL solicitada y limpia la parte relevante quitando la extensión
.html - Busca en la base de datos el
id_productpor slug del producto (última parte del path) - Obtiene el ID y el slug de la categoría principal para la URL
- Define el controlador correcto para cargar la página
- Usa el controlador padre para manejar otras URLs que no son productos ni categorías
Fragmento esencial para agregar la categoría a la URL del producto:
// En getController, resolución con categoría para producto
$id_product = $db->getValue('SELECT id_product FROM ' . _DB_PREFIX_ . 'product_lang WHERE link_rewrite = ...');
if ($id_product) {
// Obtener categoría principal del producto
$id_category = $db->getValue('SELECT id_category_default FROM ' . _DB_PREFIX_ . 'product WHERE id_product = ' . (int)$id_product);
$category_rewrite = $db->getValue('SELECT link_rewrite FROM ' . _DB_PREFIX_ . 'category_lang WHERE id_category = ' . (int)$id_category . ' AND id_lang = ' . $id_lang);
$_GET['id_product'] = $id_product;
$_GET['id_category'] = $id_category;
$this->controller = 'product';
return $this->controller;
}
Beneficios para tu tienda
SEO Optimizado
URLs limpias, mejores para motores de búsqueda
Mejor UX
Experiencia de usuario clara y profesional
Multi-idioma
Soporte multiidioma y multitienda sin conflictos
Compatible
Funciona con back-office y enlaces internos
Sin Errores
Evita conflictos con IDs mezclados
Mantenible
Código claro y fácil de extender
Cómo integrar este módulo gratis para PrestaShop
Descarga e instala el archivo
Coloca el archivo Dispatcher.php en la ruta /override/classes/ de tu tienda PrestaShop 8.x.
Limpia la caché
Borra la carpeta var/cache/prod o var/cache/dev para que el sistema regenere las rutas y aplique los cambios.
Verifica los slugs
Revisa que los slugs y categorías estén correctamente definidos en el back office para evitar errores en las URLs limpias.
Prueba tu tienda
Visita tu tienda para comprobar visualmente que las URLs aparecen sin IDs y que la categoría está incluida en la URL del producto.
Advertencia Importante
Antes de utilizar este módulo gratis para PrestaShop, asegúrate de revisar que no existan slugs duplicados en tu tienda para:
- Productos
- Categorías
- Páginas CMS
- Fabricantes
- Proveedores
Los slugs duplicados provocarán conflictos en la generación y resolución de URLs amigables, afectando el SEO y la experiencia del usuario. Por favor, corrige cualquier slug duplicado antes de subir el archivo Dispatcher para evitar problemas.