Praktické zkušenosti s upgradem na Drupal 10

Mám za sebou několik desítek upgradů na nejnovější verzi systému Drupal a potvrzuji, že současný koncept upgradů je nastaven tak, že jde spíše o větší aktualizace než nějakou zásadní změnu jako dřív.

Kdybyste se mě před pár lety zeptali na největší hendikep Drupalu, tak bych odpověděl, že je to přechod mezi jednotlivými hlavními verzemi. Ať už šlo o přechod mezi Drupalem 4, 5, 6 nebo 7, vždy to znamenalo provádět velké změny v modulech i tématu vzhledu.

O změně mezi Drupalem 7 a 8 se ani nebavím, to byla prostě změna platformy a od té chvíle je Drupal úplně jiný systém, byť koncept ovládání i struktury dat je stejný. S osmičkou a přechodem na framework Symfony vývojářský tým sliboval, že přechod mezi dalšími hlavními verzemi už bude výrazně jednodušší, než býval.

A postupně se to potvrzuje. Přechod z osmičky na devítku znamenal zbavit se v modulech a tématech vzhledu volání starých deprecated API funkcí, podobně je tomu u přechodu na Drupal 10. Dokonce mám pocit, že upgrade na desítku chce méně vývojářských úprav a je to „jen“ o práci s nastavením v administraci. Alespoň to tak cítím z projektů, které mám ve správě.

Sepsal jsem zkušenosti z přechodu u webů, o které se pravidelně starám, tzn. mají průběžné aktualizace a od chvíle vytvoření procházeli postupnými aktualizacemi. Cca polovina z nich vznikala ještě v době Drupalu 8. Jde obvykle o větší projekty sestavené z řady doplňkových modulů. V drtivé většině se jedná o prezentační firemní weby s poptávkovými formuláři. Některé jsou napojené na externí systémy, občas se tam mihne malý e-shop.

Nový CKEditor a změna vzhledu administrace

Nejvíce mě trápila změna WYSIWYG editoru a vlastně i celého vzhledu administrace. Ano, Drupal průběžně aktualizuji a nabízí se tak otázka, proč jsem klientům nezapnul CKEditor 5 a nové administrační rozhraní Claro už dříve. Inu ne každý je zapálený ajťák a webař, aby si podobné změny užíval. Konzervatismus není na škodu.

Navíc jsem měl u některých starších verzí pocit, že přepnutí z CKEditoru 4 na CKEditor 5 nezachovalo odpovídající nastavení. Nyní je vše v pořádku, stačí jen zapnout modul v jádře a v Nastavení > Vytváření obsahu > Formáty textu a editory provést změnu. Uživatelé ji poznají podle jiných ikonek editoru, ale že je kompletně přepsán a funguje technologicky úplně jinak, neřeší.

Poznámka: potíž mě čeká na jednom z webů, kde kvůli množství pluginů pro CKEditor 4 nepůjde změna provést tak hladce. Drupal 10 nabízí možnost zachování starého editoru pomocí doplňkového modulu CKEditor 4 - WYSIWYG HTML editor.

Co se změny vzhledu administrace týče, přechod mezi tématem Seven a novým Claro vyžaduje trochu času. Především proto, že Claro využívá místo na monitoru mnohem velkoryseji. I proto na nových projektech nasazujeme téma vzhledu Gin, které je prostorově úspornější a z Claro vychází. U starších webů ale nechci přidávat nová rozšíření.

Tip: pokud byste u webu chtěli z nějakého důvodu administrační téma vzhledu Seven zachovat, není problém. Stále existuje jako samostatný projekt.

Image
Ukázka administračního rozhraní Claro v Drupalu 10
Ukázka administračního rozhraní Claro v Drupalu 10

Zbavte se starých modulů

Několik modulů z jádra Drupalu 9 začalo být označováno jako zastaralé a před upgradem na Drupal 10 je nutné je vypnout. Konkrétně:

  • RDF
  • Quick Edit
  • CKEditor 4, jak už jsem zmínil
  • Aggregator
  • Color
  • HAL

Já měl na většině projektů aktivní první trojici. Pokud byste je opět potřebovali, existují dále jako samostatné rozšiřující moduly. Například tu na Maxiorlovi používám tímto způsobem modul Aggregator.

Z rozšiřujících modulů mi dělal problém pouze Empty page. Jinak jsem zjistil, že v tuto chvíli už nepoužívám žádné moduly, kde by vývoj ustrnul a nebyla k dispozici verze pro Drupal 10. Tak, kde jsem jej měl nasazený, jsem ho prostě odebral, ukrytí potřebných věcí jsem zajistil na úrovní viditelnosti bloků a bylo vyřešeno.

Problémy v API? Skoro neexistují

Před upgradem na Drupal 9 jsem často řešil různé změny v názvech služeb v API Drupalu. Tentokrát jsem nic takového nezaznamenal, spíše šlo o drobnosti.

V tématech i modulech používejte v souborech *.info.yml místo označení core: 8.x novější zápis core_version_requirement: ^9 || ^10. Nikdy ne obojí zároveň.

CKEditor 5 potřebuje novější specifikaci cesty k jeho stylům, a sice klíč ckeditor5-stylesheets v *.info.yml v tématu vzhledu. Ve stylesheetu je vhodné doplnit na začátek každého selektoru třídu .ck-content. Jinak se vám styly projeví i na stránce, kde je CKEditor načtený. To proto, že už není iframe jako dříve.

Všude, kde voláte nějakou EntityQuery, je potřeba specifikovat kontrolu přístupu k obsahu, jinak skončí chybou. Tedy například ->accessCheck(FALSE).

Jak upgradovat na Drupal 10, když je vše připraveno

Vřele doporučuji nainstalovat si modul Upgrade Status, který vám v sekci Logy > Upgrade Status zobrazí, zda je váš Drupal připraven na instalaci novější verze. Zkontroluje server (tj. verzi PHP nebo databáze) i jednotlivé moduly a témata vzhledu.

U vašich vlastních rozšíření projde za pomoci PHPStan jejich kód, zobrazí problémy a rovnou navrhne i řešení, jak máte kód přepsat.

Ve chvíli, kdy je všechno v pořádku a Upgrade Status žádné problémy nedetekuje, tak se můžete pustit do samotného upgradu na Drupal 10. Samozřejmě po kompletní záloze projektu. Zadejte do příkazového řádku následující sekvenci příkazů:

composer require 'drupal/core-recommended:^10' 'drupal/core-composer-scaffold:^10' 'drupal/core-project-message:^10' --no-update

(tento jen v případě, že máte instalovaný Upgrade Status) composer require 'drupal/core-dev:^10' --dev --no-update

composer require 'drush/drush:^12' --no-update

composer update

vendor/bin/drush updatedb -y

vendor/bin/drush cr

Poté si web otevřete v prohlížeči, vše by mělo fungovat, jak má.

Pokud se vám stane, že Composer zatvrzele odmítá aktualizaci na novější verzi a Drupal 10.1.x se vám v instalovaných balíčcích neobjevuje, pak zkuste za pomoci následujícího příkazu zjistit, co v instalaci novější verze brání.

composer why-not drupal/core-recommended 10.1.6

Několikrát se mi stalo, že jsem u projektů ještě nepřešel z překonaného Swift Maileru na novější Drupal Symfony Mailer. Stačilo Swift Mailer i Mail system v Drupalu odinstalovat, poté pomocí composer remove oba moduly odebrat a stejně tak se zbavit knihovny pomocí composer remove swiftmailer/swiftmailer.

Dalším problémem může být uvedení devítkové verze jádra v souboru composer.json. Stačí ji ručně přepsat na "drupal/core": "^10.0.0".

Některé moduly pak mohou bránit instalaci desítky proto, že podporovaná verze pro Drupal 10 má jiné číslování. Já to řešil u modulu Linkit. Stačilo jej odebrat pomocí composer remove drupal/linkit, provést composer update, poté modul opět přidat a až následně provést drushem aktualizaci databáze.

Na problémy tedy můžete narazit, to zastírat nebudu, ale jsou to pořád spíše věci týkající se nějakého nastavení. Proto považuji přechod na Drupal 10 za nepříliš složitou záležitost, jen chce poctivou přípravu.

Dobrá zpráva je, že podle plánu vydávání nových verzí přijde Drupal 11 sice příští rok, desítka bude ale dále udržovaná ještě dva tři roky. 

Tagy

Buďme ve spojení, přihlaste se k newsletteru

Odesláním formuláře souhlasíte s podmínkami zpracováním osobních údajů. 
Více informací v Ochrana osobních údajů.

Autor článku: Jan Polzer

Tvůrce webů z Brna se specializací na Drupal, WordPress a Symfony. Acquia Certified Developer & Site Builder. Autor několika knih o Drupalu.
Web Development Director v Lesensky.cz. Ve volných chvílích podnikám výlety na souši i po vodě. Více se dozvíte na polzer.cz a mém LinkedIn profilu.

Komentáře k článku

Přidat komentář

Odesláním komentáře souhlasíte s podmínkami Ochrany osobních údajů

reklama
Moje kniha o CMS Drupal

 

Kniha 333 tipů a triků pro Drupal 9


Více na KnihyPolzer.cz

Sledujte Maxiorla na Facebooku

Maxiorel na Facebooku

Hosting pro Drupal a WordPress

Hledáte český webhosting vhodný nejenom pro redakční systém Drupal? Tak vyzkoušejte Webhosting C4 za 1200 Kč na rok s doménou v ceně, 20 GB prostoru a automatické navyšováním o 2 GB každý rok. Podrobnosti zde.

@maxiorel na Twitteru

Maxiorel na Twitteru