Blog
Checklist aktualizace PrestaShop 1.7 na 9: 12 kroků, než kliknete na „Aktualizovat“
Aktualizace obchodu z PrestaShop 1.7 na 9 není otázkou jednoho kliknutí. Mezi těmito verzemi PrestaShop zvýšil minimální verzi PHP, odstranil stovky tříd jádra, vyměnil výchozí šablonu a změnil způsob, jakým je postavená administrace. Samotná aktualizace obvykle proběhne bez potíží. Rozbije se všechno kolem ní: platební modul, který volá metodu, jež už neexistuje, override, který potichu přestane fungovat, nebo šablona, která očekává proměnné, jež PrestaShop 9 už neposílá.
Tento checklist odpovídá pořadí, ve kterém sami postupujeme, když obchod připravujeme na PrestaShop 9. Většina práce proběhne ještě před samotnou aktualizací, na kopii obchodu, aby se vašim zákazníkům nic nerozbilo.
Než začnete: zapište si tři věci
Otevřete administraci a přejděte do Advanced Parameters → Information. Poznamenejte si:
- Vaši verzi PrestaShopu, například 1.7.8.11 nebo 8.1.7.
- Vaši verzi PHP, kterou najdete na stejné stránce v informacích o serveru.
- Kolik modulů nepochází přímo od PrestaShopu. V Modules → Module Manager se podívejte, co jste si nainstalovali sami nebo koupili. Právě tyto moduly rozhodují o tom, jak náročná aktualizace bude.
Obchod na verzi 1.7.8 s PHP 7.4 a dvaceti moduly třetích stran je projekt. Obchod na verzi 8.2 s PHP 8.1 a pěti dobře udržovanými moduly je práce na jedno odpoledne.
Checklist ve 12 krocích
1. Vytvořte úplnou zálohu a testovací kopii (staging)
Zálohujte soubory i databázi a ověřte si, že je dokážete skutečně obnovit. Pak vytvořte testovací kopii (staging) obchodu na stejném typu serveru, ideálně na subdoméně chráněné heslem. Všechny následující kroky provádějte nejdřív na této kopii. Ostrého obchodu se dotknete až úplně na konci.
2. Zkontrolujte server: PHP 8.1 nebo novější
PrestaShop 9 vyžaduje PHP 8.1 nebo novější (9.0 podporuje PHP 8.1 až 8.4, 9.1 přidává 8.5; viz oficiální systémové požadavky). U obchodů na verzi 1.7 je to nejčastější překážka, protože PrestaShop 1.7 na PHP 8 vůbec neběží. Zjistěte u svého hostingu, které verze PHP nabízí a zda lze verzi přepínat pro jednotlivé weby. Zkontrolujte také memory_limit (oficiální dokumentace doporučuje alespoň 512M), max_execution_time a to, zda jsou zapnutá rozšíření intl, zip, gd a mbstring.
3. Naplánujte postup: 1.7 → 8 → 9
Přímá aktualizace z 1.7 na 9 není podporovaná: oficiální Update Assistant převádí obchody z verze 1.7 nejdřív na PrestaShop 8. Zbytek postupu určují požadavky na PHP. PrestaShop 1.7.8 běží na PHP nejvýše 7.4, PrestaShop 8 na PHP 7.2.5 až 8.1 a PrestaShop 9 začíná na PHP 8.1. Pro obchod na verzi 1.7 je proto obvyklá bezpečná cesta tato:
- Aktualizujte 1.7.8 na 8.2, dokud jste ještě na PHP 7.4.
- Přepněte server na PHP 8.1, které podporuje PrestaShop 8 i 9, a otestujte.
- Aktualizujte 8.2 na 9.
Každý krok mění vždy jen jednu věc, takže když se něco rozbije, víte, co to způsobilo. Obchod, který už běží na PrestaShop 8, může přejít rovnou na 9.
4. Sepište všechny moduly třetích stran a ověřte si jejich autory
U každého modulu, který nebyl součástí PrestaShopu, si zapište verzi a zjistěte, zda autor vydal verzi pro PrestaShop 9. Moduly zakoupené na PrestaShop Addons mají podporované verze uvedené na stránce produktu. Pokud modul nebyl roky aktualizován, počítejte s jednou ze tří možností: nahradit ho, nechat ho opravit, nebo ho odstranit. Nejsnadnější výhrou jsou nepoužívané moduly: odinstalujte je před aktualizací a nemohou nic rozbít.
5. Prověřte moduly, zda nepoužívají kód, který PrestaShop odstranil
Mezi verzemi 1.7.8 a 9.0 PrestaShop odstranil 444 tříd jádra, asi 1 800 metod, 23 konstant a 16 hooků. Modul, který kterýkoli z nich používá, buď vyhodí fatální chybu, nebo potichu přestane dělat část své práce.
Nemusíte je hledat ručně. Zveřejnili jsme bezplatný open-source skript, který modul prohledá a vypíše každou odstraněnou třídu, metodu a hook, které používá, včetně souboru a řádku, a u nejčastějších případů navrhne náhradu. Popisujeme ho v článku bezplatný nástroj pro kontrolu kompatibility modulů s PrestaShop 9. Kontrola všech modulů obchodu najednou:
for m in /var/www/shop/modules/*/; do php ps9check.php "$m"; done
Typický nález vypadá takto:
ERROR yourmodule.php:176
Tools::displayPrice() was removed in PrestaShop 9.0.
→ Use $this->context->getCurrentLocale()->formatPrice($price, $this->context->currency->iso_code).
Krátký report obvykle znamená opravy na jeden řádek. Dlouhý znamená, že modul potřebuje skutečnou práci – a je lepší to vědět teď než až po aktualizaci.
6. Zkontrolujte deklarovaný rozsah kompatibility každého modulu
Každý modul v ps_versions_compliancy deklaruje, které verze PrestaShopu podporuje. Pokud je maximum nižší než 9.0, například 'max' => '8.99.99', PrestaShop 9 odmítne modul nainstalovat. Skener na to upozorní také. Hodnotu zvyšte až poté, co je modul na PrestaShop 9 skutečně otestovaný – jinak problém jen zametáte pod koberec.
7. Najděte své overridy
Overridy jsou soubory ve složce /override, které nahrazují části jádra PrestaShopu. Běžné byly v dobách verzí 1.6 a 1.7. Když PrestaShop odstraní nebo přejmenuje metodu, kterou override nahrazuje, override se prostě nikdy nezavolá – a to bez jakékoli chybové hlášky. Funkce, kterou přidával, jednoduše zmizí.
Vypište si vše v /override/classes a /override/controllers, zjistěte, který modul nebo vývojář každý soubor přidal, a ověřte, zda přepisovaná metoda v PrestaShop 9 stále existuje. Rychlý test: v Advanced Parameters → Performance můžete na testovací kopii vypnout všechny overridy a sledovat, co se změní.
8. Promyslete šablonu
PrestaShop 9 přichází s novou výchozí šablonou Hummingbird. Aktualizace vaši šablonu automaticky nepřepne, takže obchod na Classic nebo na zakoupené šabloně si ji ponechá. To je dobrá zpráva, má ale dva důsledky:
- Zakoupená šablona potřebuje vlastní verzi pro PrestaShop 9 od svého autora – přesně jako modul.
- Moduly, které fungují s Classic, se mohou na Hummingbird chovat jinak, a naopak. Hummingbird používá CSS cascade layers a vlastní modální okno košíku, což rozbilo několik částí našeho vlastního modulu košíku, než jsme je opravili. Podrobnosti najdete v naší případové studii o aktualizaci modulu na PrestaShop 9.
Pokud plánujete později přejít na Hummingbird, otestujte na něm důležité moduly už teď, když stejně testujete.
9. Začněte platebními a dopravními moduly
Ne každý nefunkční modul vás stojí stejně. Rozbitý blogový modul je nepříjemnost. Rozbitý platební nebo dopravní modul znamená žádné objednávky. Tyto moduly testujte jako první a nejpečlivěji a ověřte si u poskytovatele platební brány, že jeho modul oficiálně podporuje PrestaShop 9. Platební moduly jsou také ty, které byly nejčastěji napsány pro 1.7 a od té doby na ně nikdo nesáhl.
10. Spusťte aktualizaci na testovací kopii
Použijte oficiální modul PrestaShopu Update Assistant (dříve 1-Click Upgrade; viz oficiální návod k aktualizaci). Před začátkem zapněte na testovací kopii režim ladění (Advanced Parameters → Performance → Debug mode), abyste místo prázdné stránky viděli skutečné chyby. Zapište si každou chybu i notice. Notice, která v režimu ladění vypadá neškodně, může být příznakem modulu, který funguje jen napůl.
11. Otestujte cestu k penězům od začátku do konce
Po aktualizaci vytvořte na testovací kopii skutečné testovací objednávky:
- Projděte kategorii a stránku produktu.
- Přidejte produkt do košíku, změňte množství, odeberte produkt.
- Uplatněte slevový kupón.
- Projděte pokladnou jako host i jako přihlášený zákazník.
- Zaplaťte každou platební metodou, kterou nabízíte (v testovacím režimu).
- Zkontrolujte potvrzovací e-mail objednávky a objednávku v administraci.
Udělejte to na počítači i na telefonu. Problémy s košíkem a pokladnou se často projeví jen na mobilu, například fixní tlačítko, které skončí na špatném místě. Pokud váš obchod používá vysouvací nebo vyskakovací košík, otestujte ho zvlášť: košík je část obchodu, která je se šablonou provázaná nejtěsněji. Náš Block Sliding Cart je příkladem modulu košíku, který už běží na PrestaShop 1.7, 8 i 9, a to na Classic i na Hummingbird.
12. Naplánujte spuštění i cestu zpět
Až staging funguje, zopakujte aktualizaci na ostrém obchodě v klidné době a se zapnutým režimem údržby. Předem si určete, co znamená „něco se pokazilo“ a jak provedete návrat zpět: obnova zálohy z kroku 1 musí trvat minuty, ne hodiny. Po spuštění několik dní sledujte chybový log a počet objednávek.
Co se obvykle rozbije
Když jsme aktualizovali vlastní modul, PHP část vyžadovala méně změn, než jsme čekali. Nejvíc času nás stály tyto problémy:
- Odstraněné metody jádra, například
Tools::displayPrice(), které na sedmi místech vedly k fatálním chybám. - Třídy přesunuté do nového jmenného prostoru, například presentery košíku a produktu.
- Nová šablona: seznam v košíku, který se kvůli CSS layers změnil na dvousloupcovou mřížku, a funkce šablony, která vyhodila chybu, když dostala vlastní HTML modulu.
- Notices v režimu ladění, které vypadaly neškodně, ale při přísnějších kontrolách způsobily selhání stránek.
Celý příběh i s opravami kódu najdete v článku Aktualizace modulu na PrestaShop 9: co se rozbilo a jak jsme to opravili.
Checklist ve zkratce
| # | Krok | Hotovo |
|---|---|---|
| 1 | Úplná záloha (soubory + databáze), otestovaná obnova, vytvořená testovací kopie | ☐ |
| 2 | Hosting nabízí PHP 8.1+; paměť a rozšíření zkontrolovány | ☐ |
| 3 | Zvolen postup aktualizace (1.7 → 8.2 → PHP 8.1 → 9, nebo 8 → 9) | ☐ |
| 4 | Moduly třetích stran sepsány; nepoužívané odstraněny | ☐ |
| 5 | Všechny moduly prověřeny na odstraněný kód | ☐ |
| 6 | ps_versions_compliancy zkontrolováno |
☐ |
| 7 | Overridy sepsány a zkontrolovány | ☐ |
| 8 | Šablona má verzi pro PrestaShop 9; klíčové moduly otestovány na Hummingbird | ☐ |
| 9 | Platební a dopravní moduly potvrzeny pro PrestaShop 9 | ☐ |
| 10 | Aktualizace spuštěna na stagingu se zapnutým režimem ladění | ☐ |
| 11 | Testovací objednávky vytvořeny na počítači i na mobilu | ☐ |
| 12 | Dohodnuto okno pro spuštění a plán návratu zpět | ☐ |
Často kladené otázky
Mohu aktualizovat z PrestaShop 1.7 přímo na 9?
Ne. Oficiální Update Assistant aktualizuje obchody z verze 1.7 nejdřív na PrestaShop 8; PrestaShop 1.7 navíc na PHP 8 neběží a PrestaShop 9 potřebuje PHP 8.1 nebo novější. Bezpečná cesta vede z 1.7.8 na 8.2 na vaší současné verzi PHP, poté přepnutím na PHP 8.1 a nakonec aktualizací na 9.
Budou moje moduly fungovat na PrestaShop 9?
Moduly, které autor pro PrestaShop 9 aktualizoval, ano. Starší moduly fungují jen tehdy, pokud nepoužívají žádný kód, který PrestaShop odstranil. Náš bezplatný nástroj pro kontrolu kompatibility tento kód u každého modulu vypíše, takže to víte ještě před aktualizací.
Jakou verzi PHP PrestaShop 9 potřebuje?
PHP 8.1 nebo novější. Než začnete plánovat cokoli dalšího, ověřte si, které verze váš hosting podporuje.
Musím přejít na šablonu Hummingbird?
Ne. Aktualizace zachová vaši současnou šablonu. Zakoupená šablona potřebuje verzi pro PrestaShop 9 od svého autora, a pokud plánujete později přejít, vyplatí se otestovat důležité moduly na Hummingbird.
Jak dlouho trvá aktualizace na PrestaShop 9?
Samotná aktualizace trvá od několika minut do hodiny. Příprava trvá déle: od jednoho odpoledne u obchodu na PrestaShop 8 s několika udržovanými moduly až po několik dní u obchodu na verzi 1.7 s mnoha starými moduly a overridy.
Když skener vrátí dlouhý seznam
Některé obchody tímto seznamem projdou za den. Jiné zjistí, že polovina jejich modulů potřebuje úpravy. Pokud byste tuto část raději předali někomu jinému, přesně tohle děláme: opravy modulů pro PrestaShop 9. Najdeme příčinu, opravíme ji na kopii vašeho obchodu a teprve pak nasadíme. Pošlete nám report ze skeneru a ozveme se s doplňujícími otázkami nebo cenovou nabídkou.
