---
title: Resolucion de conflictos entre overrides
section: overrides
slug: conflict-resolution
description: "Como detectar y resolver conflictos entre overrides de diferentes modulos en PrestaShop: class_index.php, fusion manual, depuracion y prevencion."
keywords: prestashop conflictos overrides modulos class_index fusion manual depuracion prevencion
last_updated: 2024-12-01
source_url: "https://ayudaprestashop.es/overrides/conflict-resolution"
---

# Resolucion de conflictos entre overrides

> Como detectar y resolver conflictos entre overrides de diferentes modulos en PrestaShop: class_index.php, fusion manual, depuracion y prevencion.

Un conflicto de overrides ocurre cuando dos modulos intentan sobreescribir la misma clase PHP del core. PrestaShop solo puede tener una version del archivo override, por lo que el segundo modulo en instalarse reemplaza al primero.

## Como se producen los conflictos

*Escenario tipico de conflicto*

```bash
# Modulo A instala: override/classes/Product.php
# -> Añade campo 'warranty_months'

# Modulo B intenta instalar: override/classes/Product.php
# -> Añade campo 'eco_label'

# Resultado: PS no puede fusionarlos automaticamente
# Solo uno prevalece (el de la ultima instalacion)
# El otro modulo pierde su funcionalidad o causa errores fatales

# Sintoma comun:
# Fatal error: Cannot redeclare class Product
# o
# White screen al acceder a productos
```

## Detectar el conflicto

*Diagnostico de conflictos de overrides*

```bash
# 1. Ver el log de errores de PHP
tail -100 var/log/prod.log
tail -100 /var/log/php_errors.log

# 2. Verificar el contenido del override existente
cat override/classes/Product.php

# 3. Verificar class_index.php
cat cache/class_index.php | grep Product

# 4. Desactivar temporalmente un modulo para aislar el problema
# (desde el BO o via CLI)
php bin/console prestashop:module:disable nombre_modulo

# 5. Forzar regeneracion del class index
rm cache/class_index.php
# (PS lo regenera en la proxima peticion)
```

## Fusion manual de overrides

*Fusion manual de dos overrides en uno*

```php
<?php

if (!defined('_PS_VERSION_')) { exit; }

/**
 * OVERRIDE FUSIONADO de Product.
 * Contiene logica de MODULO A y MODULO B.
 *
 * Modulo A: añade 'warranty_months'
 * Modulo B: añade 'eco_label'
 *
 * IMPORTANTE: este archivo debe mantenerse al actualizar cualquiera de los dos modulos.
 */
class Product extends ProductCore
{
    // ── MODULO A ──
    public static function getProductProperties($idLang, $product, Context $context = null): array
    {
        $props = parent::getProductProperties($idLang, $product, $context);

        // Logica del Modulo A
        $props['warranty_months'] = (int) Db::getInstance()->getValue(
            'SELECT months FROM `' . _DB_PREFIX_ . 'module_a_warranty`
             WHERE id_product = ' . (int) ($product['id_product'] ?? 0)
        );

        // Logica del Modulo B (añadida en la fusion)
        $props['eco_label'] = (string) Db::getInstance()->getValue(
            'SELECT label FROM `' . _DB_PREFIX_ . 'module_b_eco`
             WHERE id_product = ' . (int) ($product['id_product'] ?? 0)
        );

        return $props;
    }
}
```

## Prevencion de conflictos

| Estrategia | Descripcion |
| --- | --- |
| Usar hooks en lugar de overrides | Si existe un hook que hace lo mismo, usarlo siempre |
| Minimizar los metodos sobreescritos | Solo sobreescribir lo estrictamente necesario |
| Documentar los metodos tocados | Para facilitar la fusion manual si ocurre un conflicto |
| Verificar conflictos antes de instalar | Comprobar si ya existe el archivo override |
| Instalar overrides condicionalmente | Si ya existe override, intentar fusionar o alertar al usuario |
| Probar con otros modulos populares | Especialmente con modulos como Yotpo, Klaviyo, etc. |


---

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