---
title: Como funcionan los overrides en PrestaShop
section: overrides
slug: overview
description: "Como funciona el sistema de overrides de PrestaShop: directorio override/, proceso de merge en class_index.php, tipos de overrides y cuando usarlos vs hooks."
keywords: prestashop overrides como funcionan class_index.php merge directorio override tipos hooks alternativas
last_updated: 2024-12-01
source_url: "https://ayudaprestashop.es/overrides/overview"
---

# Como funcionan los overrides en PrestaShop

> Como funciona el sistema de overrides de PrestaShop: directorio override/, proceso de merge en class_index.php, tipos de overrides y cuando usarlos vs hooks.

El sistema de overrides de PrestaShop permite **reemplazar o extender clases del core** colocando archivos PHP en el directorio `/override/`. Es util para personalizaciones que no son posibles con hooks, pero debe usarse con cuidado para evitar conflictos entre modulos.

## El directorio override/

*Estructura del directorio override/*

```bash
override/
├── classes/
│   ├── Cart.php              # Override de Cart
│   ├── Product.php           # Override de Product
│   ├── order/
│   │   └── Order.php         # Override de Order
│   └── webservice/
│       └── WebserviceKey.php
└── controllers/
    ├── admin/
    │   ├── AdminOrdersController.php
    │   └── AdminProductsController.php
    └── front/
        ├── ProductController.php
        └── CategoryController.php
```

## Como PrestaShop fusiona los overrides

Cuando instalaas un modulo con overrides, o cuando se detecta un archivo en `/override/`, PrestaShop genera `/cache/class_index.php`. Este archivo mapea cada clase a su implementacion (core o override).

*cache/class_index.php — ejemplo de contenido generado*

```php
<?php
// Generado automaticamente por PrestaShop
// NO editar manualmente
return array(
    'Cart'    => array('path' => _PS_OVERRIDE_DIR_ . 'classes/Cart.php',    'type' => 'override'),
    'Product' => array('path' => _PS_OVERRIDE_DIR_ . 'classes/Product.php', 'type' => 'override'),
    'Order'   => array('path' => _PS_CORE_DIR_    . 'classes/order/Order.php', 'type' => 'core'),
    // ...
);

// Para regenerar manualmente (cuando hay problemas):
// Eliminar este archivo y PS lo regenera en la proxima peticion
```

## Tipos de overrides disponibles

| Tipo | Directorio | Ejemplos |
| --- | --- | --- |
| ObjectModel | override/classes/ | Product, Cart, Order, Customer, Category |
| Helper | override/classes/helper/ | HelperForm, HelperList, Helper |
| FrontController | override/controllers/front/ | ProductController, CategoryController |
| AdminController | override/controllers/admin/ | AdminOrdersController, AdminProductsController |
| Webservice | override/classes/webservice/ | WebserviceKey, WebserviceRequest |

## Override vs Hooks — decision rapida

| Necesidad | Usar Override? | Alternativa con Hook |
| --- | --- | --- |
| Añadir campo a producto | No recomendado | actionProductFormBuilderModifier + tabla propia |
| Modificar listado admin | No recomendado | actionOrderGridDefinitionModifier |
| Añadir validacion al carrito | Solo si no hay hook | actionCartSave, actionBeforeCartUpdateQty |
| Modificar URL de pagina FO | No recomendado | hookModuleRoutes |
| Cambiar calculo de precio | Solo si necesario | actionProductPriceCalculation |
| Añadir columna a tabla DB | Evitar (crea dependencia) | Tabla propia con id_product |
| Modificar envio de email | No recomendado | actionEmailSendBefore |

## Verificar overrides instalados

*Comandos para verificar el estado de los overrides*

```bash
# Ver todos los overrides activos
ls override/classes/
ls override/controllers/front/
ls override/controllers/admin/

# Regenerar el class index (resolver problemas de deteccion)
rm cache/class_index.php
# (PS lo regenera en la proxima peticion HTTP)

# Via bin/console de PrestaShop
php bin/console prestashop:override:list

# Limpiar toda la cache de clases
php bin/console cache:clear --env=prod
```

> **[!] Conflictos entre overrides de modulos**
>
> Si dos modulos instalan un override de la misma clase, el segundo modulo en instalarse sobreescribira el primero. El primer modulo dejara de funcionar. Usa hooks siempre que sea posible para evitar este problema.


---

*Fuente: [https://ayudaprestashop.es/overrides/overview](https://ayudaprestashop.es/overrides/overview). Version Markdown generada automaticamente para consumo por LLMs.*
