Czas na aktualizację stron do Drupala 9

drupal 9

Nadszedł już czas aby się spiąć i zaktualizować Wasze Drupale do wersji 9, czyli najnowszej stabilnej.

Zapytacie po co? No chociażby po to aby ktoś za Was szukał błędów w systemie i dbał o to aby nikt się nie włamał na stronę. Drupal 8 kończy swój żywot 2 listopada, data jest ściśle powiązana z końcem wspierania Symfony 3, które jest największą zależnością w Drupalu.

(właśnie się zorientowałem, że strona dropit.pl cały czas na Drupal 8...)

Jeżeli używacie Drupala 8 to cała operacja nie powinna być bolesna choć nie obiecuję Wam, że się przy tym nie narobicie, szczególnie jak macie dużo contribowych modułów na stronie.

Jakim narzędziami możecie sobie pomóc?

Moduł Upgrade Status, który pokazuje status wszystkich modułów i skórek i to czy ich kod zgadza się z Drupalem 9. Dobrze wyłapuje większość przestarzałych metod, których nie ma już w Drupalu 9. 

Wszystkie znalezione problemy trzeba poprawić, moduł nie zrobi tego za nas.

Czyli w naszej gestii jest poprawienie kodu w modułach customowych lub napisanie patcha do modułu contribowego. Dobrą wiadomością jest to, że sporo modułów contribowych dorobiło się wersji na D9 lub ma napisanego patcha.

 

Obrazek z https://www.drupal.org/project/upgrade_status

 

Czego nie wyłapał gdy przeniosłem spora stronę na D9

np. kilku miejsc z metodą getUserName(), której nie ma w Drupalu 9 i trzeba ją zastąpić getDisplayName()

W customowych modułach, szczególnie tych starszych gdzie w constructorach używane były obiekty typu entityManager, który jest przestarzały i trzeba było go zastąpić entityTypeManagerem.

Wspomagaczem do powyższego modułu jest moduł Upgrade Rector, który podaję jako ciekawostkę a który zupełnie się u mnie nie sprawdził.

Moduł automatycznie tworzy patche do modułów. W moim przypadku te patche nie były kompletne dlatego, że moduł nie obsługuje każdego typu problemów w kodzie.

W moim przypadku były to cząstkowe patche, które i tak musiały by być zmieniane lub tworzone nowe, już własnoręcznie.

Innym narzędziem, którym można analizować kod jest

https://github.com/mglaman/drupal-check

Nie jest to moduł tylko paczka do zainstalowania poprzez composer.

Jest to narzędzie do analizy kodu, nie poda Wam na tacy rozwiązania ale ułatwi znalezienie kodu, któremu warto się przyjrzeć i ewentualnie poprawić.

Przykładowa komenda

drupal-check -ad web/modules/custom/nazwamodulu

a to wynik, jak widać dzieje się …

 

Problemy z modułami contrib.

Czasami trzeba poświęcić więcej czasu aby ograć problem modułów, które nie są przeniesione na Drupala 9. Zwykle jest to zastosowanie developerskiego patcha lub przeniesienie funkcjonalności.

Miałem dwa przypadki.

Moduł Markdown, który służy do formatowania tekstu. Trzeba było zastosować patch udostępniony przez community.

Moduł Theme Changer, który daje możliwość odpalenia wybranej skórki dla wybranej ścieżki. To trzeba było przepisać, brak działającej wersji dla D9.

Moduł Views Custom Table, który sprawia, że każda customowa tabela w bazie może być wciągnięta do Views i tam w łatwy sposób obsłużona. Też trzeba było przepisać, oczywiście nie cały moduł tylko w kodzie stworzyć odpowiednią stronę z danymi.

 

A co jeżeli aktualizujesz z Drupala 6 lub 7.

Gdzie żeś się uchował?

Operacja jest znacznie bardziej skomplikowana. Najpierw musisz podnieść Drupala do wersji 8 a dopiero później do 9.

Przepis jak to zrobić znajduje się na https://www.drupal.org/docs/upgrading-drupal/preparing-a-site-for-upgrade-to-drupal-8

 

Powodzenia!