Unable to install override in PrestaShop: een override-conflict en hoe je het oplost
De melding “Unable to install override” in PrestaShop betekent dat de module die je installeert een methode van een klasse wil overschrijven die een andere module, of een oud bestand in de map override, al overschrijft. PrestaShop voegt twee overrides niet samen en stopt. De oplossing is de verweesde override verwijderen of de code van beide modules met de hand samenvoegen, met back-ups.
Auteur: Het TellMyShop-team. Een gids voor eigenaren van PrestaShop-winkels: de oorzaak, de oplossing met de hand en hetzelfde werk in een gesprek met de chat.
Laatst bijgewerkt: · 7 min lezen
Waar komt een override-conflict vandaan?
Een override is een bestand waarmee een module een deel van de werking van PrestaShop vervangt, bijvoorbeeld hoe de verzendkosten in de winkelwagen worden berekend. Bij de installatie kopieert PrestaShop dat bestand uit de modulemap naar de map override van de webshop. Bij het de-installeren haalt het het daar weer weg.
Overrides zijn exclusief. Eén methode van één klasse kan maar één vervangende versie hebben. De PrestaShop-documentatie voor ontwikkelaars zegt duidelijk dat een module met een override kan verhinderen dat andere modules hetzelfde gedrag wijzigen. Daarom raadt het PrestaShop-team overrides alleen aan in je eigen modules, terwijl modules voor de verkoop hooks gebruiken.
De meest voorkomende situaties die met deze melding eindigen:
| Situatie | Hoe je het herkent | Wat meestal helpt |
|---|---|---|
| Twee modules wijzigen dezelfde methode | de melding noemt de klasse en methode, en override bevat een bestand met die methode van een andere module | de code van beide overrides samenvoegen in één bestand, of één module laten vallen |
| Een override die een oude module heeft achtergelaten | de module staat niet in de lijst, maar het bestand in override heeft nog zijn code | de verweesde methode uit het bestand verwijderen, met een back-up |
| Dezelfde module opnieuw installeren | de module is met een fout gede-installeerd en heeft niet opgeruimd | de restanten verwijderen, dan opnieuw installeren |
| Een handmatige wijziging van jaren geleden | een bestand in override zonder commentaar over een module, niemand weet waar het vandaan komt | bij de vorige ontwikkelaar navragen wat het doet voordat je iets aanraakt |
| Een oude klassencache | de fout keert terug nadat de override is verwijderd | de cache van de webshop legen |
De Poolse moduleleverancier PrestaShow beschrijft hetzelfde patroon in zijn kennisbank (in het Pools): het bestaande bestand hernoemen, de module installeren en daarna de twee bestanden met de hand samenvoegen. Hij raadt ook aan voor die tijd de onderhoudsmodus aan te zetten.
Zo los je “Unable to install override” stap voor stap op
Dit is werk voor je ontwikkelaar. Hieronder staat een lijst die je kunt doorgeven. Elke stap begint met een back-up, want bestanden in override veranderen hoe de hele webshop werkt.
- Bewaar de volledige melding. Je hebt de naam van de klasse en de methode nodig. Zonder die gokt de ontwikkelaar.
- Maak een back-up van de database en de map
override. Het liefst van de hele webshop, of op zijn minst van die map en de map van de module die je installeert. - Zoek het bestand dat deze methode al overschrijft. Voor de klasse
Cartis dat meestaloverride/classes/Cart.php. Modules laten vaak boven de methode een commentaar achter met de naam van de module en de installatiedatum. - Controleer of de module die het bezit in de webshop staat. Zo niet, dan is de methode verweesd en kan hij uit het bestand. Zo ja, dan moet de code van beide modules worden samengevoegd zodat ze allebei werken.
- Leeg de cache. In Geavanceerde parameters → Prestaties staat een knop om de cache te legen. PrestaShop bouwt dan de lijst met klassen met overrides opnieuw op.
- Installeer de module opnieuw en controleer de winkelwagen, de levering of waar de override verder aan raakt. Plaats een testbestelling.
Bij het zoeken naar de boosdoener helpt de schakelaar om alle overrides uit te schakelen onder Geavanceerde parameters → Prestaties. De functionele documentatie van PrestaShop beschrijft die als de schakelaar voor alle overrides van klassen en controllers. Hij werkt op de hele webshop, dus gebruik hem kort, het liefst op een testkopie.
Wat je niet doet als een module niet wil installeren
Een paar kortere routes die van één melding een groter probleem maken:
- Blind een bestand uit
overrideverwijderen. De module die het heeft toegevoegd, werkt zonder melding niet meer. Soms gaat het om de verzendkosten of een korting in de winkelwagen. - Een methode van het ene bestand naar het andere kopiëren zonder hem te lezen. Twee versies van dezelfde methode in één klasse geven een PHP-fout en een wit scherm.
- Bestanden in de modulemap bewerken. De wijzigingen verdwijnen als de module wordt bijgewerkt, en het conflict komt terug.
- Overrides permanent uitgeschakeld laten. Modules die ze nodig hebben, werken dan maar half.
Is er na de installatie een 500-fout verschenen, lees dan de handleiding over de PrestaShop 500 error. De foutmelding vind je nadat je debug mode hebt aangezet.
Hoe kan de chat een ontwikkelaar helpen bij een override-conflict?
Je chat (Claude of ChatGPT) met de TellMyShop-module leest de webshop zoals een ontwikkelaar dat bij een eerste afspraak zou doen. In het gratis TellMyShop Free ziet hij de lijst met modules met versies en het foutenlog van de webshop, dus hij kan helpen vaststellen wanneer het probleem begon. Alleen TellMyShop Pro leest override- en modulebestanden, zonder dat er schakelaars nodig zijn.
Jij: Het installeren van de bezorgmodule eindigt met Unable to install override, methode getOrderShippingCost in de klasse Cart. Wat moet ik doen?
Je chat: In override/classes/Cart.php wordt de methode getOrderShippingCost overschreven door de module voor gratis verzending. Die module is geïnstalleerd en ingeschakeld. De nieuwe module wil dezelfde methode overschrijven. Ik stel voor beide versies samen te voegen: de nieuwe module rekent eerst, en de drempel voor gratis verzending werkt zoals nu. Voorbeeld van de wijziging in het bestand:
Voor het opslaan van een bestand in de map override is de schakelaar Onderhoud nodig. Ik maak voor het opslaan een kopie van het bestand. Zal ik de volledige code laten zien zodat je ontwikkelaar die kan controleren?
oude versie: public function getOrderShippingCost(...) { /* versie van de module voor gratis verzending */ }
nieuwe versie: public function getOrderShippingCost(...) { /* samengevoegde versie: nieuwe module + drempel voor gratis verzending */ }
De namen van de modules en de code in het voorbeeld zijn ter illustratie. In een echt gesprek toont de chat de volledige code van de methode, geen samenvatting.
Wat elke stap nodig heeft:
override- en modulebestanden lezen werkt in TellMyShop Pro direct, voor tekstbestanden tot 1 MB.- Een bestand in een modulemap wijzigen vraagt de schakelaar Modules, die 24 uur werkt.
- Een bestand in de map
overridevan de webshop wijzigen valt onder de schakelaar Onderhoud. Die geeft volledige technische toegang, dus hij gaat na 3 uur vanzelf uit. - Een module opnieuw installeren uit een ZIP-pakket vraagt weer de schakelaar Modules.
Elke schakelaar kun je alleen aanzetten als de plugin een geslaagde databaseback-up van dezelfde dag heeft. Van elk bestand wordt een kopie gemaakt voordat het wordt opgeslagen, en PHP-bestanden worden op syntaxfouten gecontroleerd. Elke wijziging zie je eerst in een voorbeeld, ze wordt opgeslagen na jouw ‘ja’ en komt in de wijzigingsgeschiedenis. De meeste wijzigingen kun je ongedaan maken, ook een bestand dat uit zijn kopie wordt teruggezet. Een module de-installeren kan niet ongedaan worden gemaakt, dus de chat stelt voor hem eerst uit te schakelen.
Eerlijk is eerlijk: bij het samenvoegen van de code van twee modules laat de chat de oorzaak en een concept voor het herstel zien, maar de ontwikkelaar of de maker van de module is verantwoordelijk voor de beslissing of de samengevoegde methode doet wat beide modules verwachten. Een vergelijkbaar voorbeeld vind je in de use case een fout in de code van een module herstellen, en het lezen van het log in de use case foutmeldingen na een module-update.
Hoe voorkom je conflicten met toekomstige modules?
Vraag voordat je een module koopt aan de maker of hij overrides gebruikt en, zo ja, voor welke klassen. Modules die op hooks zijn gebouwd, botsen minder vaak. Volg bij het installeren de volgorde uit de handleiding over een PrestaShop-module installeren, en schakel ongebruikte modules uit in plaats van ze te verwijderen tot je zeker weet dat niets erop leunt.
Voordat je modules gaat opruimen, kun je de webshop controleren met het gratis TellMyShop Free. Volledig bestanden lezen en opslaan met back-ups werkt in TellMyShop Pro; de prijzen staan bij de prijzen.
Vragen en antwoorden
Wat betekent de melding Unable to install override precies?
PrestaShop probeert het override-bestand van de module die je installeert naar de map override van de webshop te kopiëren en stuit op een methode die al door een ander bestand wordt gewijzigd. Twee modules kunnen niet dezelfde methode van dezelfde klasse overschrijven, dus de installatie stopt. De melding noemt meestal de klasse en de methode, bijvoorbeeld Cart en getOrderShippingCost.
Maakt deze fout een webshop die al draait kapot?
Meestal niet. De installatie van de nieuwe module wordt niet afgerond, en de webshop werkt zoals voor de poging. Problemen ontstaan als iemand er met geweld omheen probeert te werken, bijvoorbeeld door een bestand uit de map override te verwijderen zonder te controleren van wie het is.
Kan ik het bestand gewoon uit de map override verwijderen?
Alleen als je weet dat het hoort bij een module die niet meer in de webshop staat. Hoort het bestand bij een werkende module, dan doet die module niet meer waar hij voor is, zoals de levering op zijn eigen manier berekenen. Controleer eerst welke module de override heeft toegevoegd, en maak een kopie van het bestand.
Lost TellMyShop het override-conflict zelf op?
Met TellMyShop Pro leest de chat beide overrides, wijst hij de botsende methode aan en maakt hij een samengevoegd bestand klaar in een voorbeeld. Een bestand in de map override opslaan vraagt de schakelaar Onderhoud voor 3 uur, en voor het opslaan wordt een kopie van het bestand gemaakt. De beslissing hoe je de code van twee modules samenvoegt, laat je nog steeds het best over aan een ontwikkelaar of de maker van de module.
PrestaShop is een geregistreerd handelsmerk van PrestaShop SA. Claude is een handelsmerk van Anthropic PBC. ChatGPT en OpenAI zijn handelsmerken van OpenAI. TellMyShop is niet gelieerd aan deze bedrijven.