🔧 Overrides de templates desde el tema
Actualizado: 2024-12-01
PrestaShop permite a los temas sobreescribir los templates de los modulos sin modificar el modulo directamente. Basta con crear el archivo en el directorio correcto dentro del tema.
#Como funciona el override de templates
Cuando un modulo hace $this->display(__FILE__, 'views/templates/hook/my_hook.tpl'), PrestaShop busca el template en varios lugares antes de usar el del modulo. El tema tiene prioridad.
#Estructura de directorios
Directorio de overrides en el tema
text
themes/
└── mytheme/
└── modules/
├── ps_featuredproducts/ ← nombre del modulo
│ └── views/
│ └── templates/
│ └── hook/
│ └── featured.tpl ← mismo path relativo al modulo
├── blockcart/
│ └── blockcart.tpl
└── ps_shoppingcart/
└── ps_shoppingcart.tpl
# La ruta dentro de themes/mytheme/modules/ replica exactamente
# la ruta relativa del template dentro del modulo.
#
# Si el modulo llama a:
# modules/ps_featuredproducts/views/templates/hook/featured.tpl
# PrestaShop buscara primero en:
# themes/mytheme/modules/ps_featuredproducts/views/templates/hook/featured.tpl
#Orden de precedencia
| Prioridad | Ubicacion | Descripcion |
|---|---|---|
| 1 (mas alta) | themes/{theme}/modules/{module}/... | Override del tema activo |
| 2 | themes/{theme}/modules/{module}/... | Override del tema padre (si child theme) |
| 3 (mas baja) | modules/{module}/views/templates/... | Template original del modulo |
#Ejemplos comunes
Modulos de PS que se sobreescriben con mas frecuencia
text
# Carrito de compras
themes/mytheme/modules/ps_shoppingcart/ps_shoppingcart.tpl
# Menu de navegacion
themes/mytheme/modules/ps_mainmenu/ps_mainmenu.tpl
# Buscador
themes/mytheme/modules/ps_searchbar/ps_searchbar.tpl
# Productos destacados en home
themes/mytheme/modules/ps_featuredproducts/views/templates/hook/featured.tpl
# Banner de imagen
themes/mytheme/modules/ps_imageslider/views/templates/hook/slider.tpl
# Breadcrumbs (migajas de pan)
themes/mytheme/modules/ps_breadcrumb/ps_breadcrumb.tpl
# Bloque de categorias
themes/mytheme/modules/ps_categoryproducts/ps_categoryproducts.tpl
# Footer
themes/mytheme/modules/ps_legalcompliance/ps_legalcompliance.tpl
Ejemplo de template override — ps_shoppingcart
smarty
{* themes/mytheme/modules/ps_shoppingcart/ps_shoppingcart.tpl *}
{* Primero, copiar el template original del modulo y modificarlo *}
<div id="_desktop_cart" class="my-custom-cart">
<a href="{$cart_url}" class="cart-preview">
{* Usar las variables que el modulo ya asigna a Smarty *}
<span class="cart-icon">
{if $cart.products_count > 0}
<span class="cart-badge">{$cart.products_count}</span>
{/if}
</span>
<span class="cart-label">{l s='Cart' mod='ps_shoppingcart'}</span>
<span class="cart-total">{$cart.totals.total.amount}</span>
</a>
</div>
#Limpiar la cache de Smarty
Limpiar cache tras modificar templates
bash
# ── Desde la consola ──
php bin/console cache:clear
# ── Desde el Back Office ──
# Parametros Avanzados → Rendimiento → Vaciar cache
# ── Desde PHP (en desarrollo) ──
# Tools::clearAllCache();
# ── Eliminar archivos de cache manualmente ──
rm -rf var/cache/dev/*
rm -rf var/cache/prod/*
# En PS 1.7:
rm -rf app/cache/dev/*
rm -rf app/cache/prod/*
Descargar en Markdown
Pensado para pegar en ChatGPT, Claude u otra IA. Incluye solo el contenido de esta pagina.