🔧 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

PrioridadUbicacionDescripcion
1 (mas alta)themes/{theme}/modules/{module}/...Override del tema activo
2themes/{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.