Co programista Drupala powinien umieć w 2020 roku?

Choć przez wiele osób Drupal postrzegany jest jako CMS, tak naprawdę należy on do CMF, łącząc w sobie funkcjonalności systemu zarządzania treścią z frameworkiem. Rozbudowany silnik Drupala, tworzony przez międzynarodową społeczność, zapewnia solidne fundamenty, które pozwalają na budowę zaawansowanych i nowoczesnych systemów webowych, począwszy od prostych wizytówek, przez sklepy, kończąc na zaawansowanych aplikacjach. 

Podobnie jak w typowych frameworkach, programista Drupala może korzystać z gotowych komponentów – modułów tworzonych przez społeczność, jak również może pisać swoje rozwiązania, które pozwalają na modyfikację silnika i jego rozbudowę. Drupal jest potężnym systemem, do którego obsługi potrzeba sporej wiedzy programistycznej. Poznaj zatem zestaw umiejętności, jakie musi posiadać Drupal Developer w 2020 roku.

Piotr Kujawa. CEO w Smartbees. Od ponad 10 lat w branży webdesign i e-commerce. Swoją przygodę rozpoczynał jako Drupal Developer. Obecnie zarządza software housem, budując sprzedaż i marketing w firmie. Po godzinach ojciec, mąż i zapalony piłkarz amator.


Niezbędne umiejętności Drupal Developera w 2020 roku

Drupal Developer a front-end

HTML i CSS

Branża web developmentu to oczywiście HTML i CSS. Przeglądarki (no może poza jedną :)) zmienią nam kod tych dwóch języków na piękne witryny i o ile w przypadku tego pierwszego nie trzeba nic wyjaśniać, to praca nad kodem w CSS w dzisiejszych czasach nieco się zmieniła. 

Standardem w pracy Drupal Developera stały się preprocesory CSS. Upraszczając, można przyjąć, że rozbudowują one standardową składnię CSS o unikatowe funkcje, dzięki którym stylowanie frontu staje się szybsze i przyjemniejsze. Najpopularniejsze dziś preprocesory to SASS i LESS, niestety kod napisany w tych standardach nie jest rozumiany przez przeglądarki i należy go skompilować do zwykłego CSS. Możesz to w prosty sposób zrobić korzystając przykładowo z Grunta lub Gulpa, czyli tak zwanych task runnerów, które ułatwiają programiście pewne czynności.

JS i jQuery

Korzystając tylko z HTML i CSS, potrafisz już zbudować podstawową stronę, a nawet wprowadzić do niej trochę animacji. Możesz oczywiście rozbudować strony o jeszcze ciekawsze elementy, które wprowadzą więcej dynamiki i efektów. Z pomocą przychodzą Ci skrypty pisane w JS. Oczywiście nie mamy tutaj na myśli efektów typu: padający śnieg czy gwiazdki podążające za kursorem, tylko bardziej zaawansowane i przede wszystkim przydatne rozwiązania. Dzięki JavaScript i najpopularniejszej bibliotece jQuery możesz osiągnąć bardzo ciekawe efekty animacji elementów na stronie czy dynamicznie modyfikować zawartość strony bez konieczności jej przeładowania, czy wykonywać zapytania AJAX. W dzisiejszym Internecie ciężko znaleźć stronę, która choć w małym stopniu nie korzystałaby z JavaScript, dlatego każdy webdeveloper powinien znać przynajmniej podstawy tego języka i wiedzieć, jak go implementować czy debugować. W tym ostatnim bardzo pomocne są dzisiejsze przeglądarki, które udostępniają szereg pomocnych narzędzi.

Vue i React

Wiesz już, że znajomość JS i jQuery to minimum umiejętności dla dzisiejszego Drupal Developera. Jednak, aby być konkurencyjnym na rynku programistów – w szczególności jak Front-End Developer, powinieneś wiedzieć coś więcej o technologiach pozwalających na budowanie nowoczesnych interfejsów użytkownika. Dobrą drogą mogą okazać się frameworki JS takie jak Vue.js czy React, które w ostatnim czasie zyskały bardzo dużą popularność.

Programista Drupala a back-end

Znajomość (chociaż podstawową) frontendu powinien mieć każdy web developer. Jednak serce strony zazwyczaj stoi po stronie backendu. Dobry Drupal Developer to przede wszystkim dobry Programista PHP – czyli właśnie backendu.

PHP

Wspomniałem o solidnych fundamentach, na których możemy budować strony przy użyciu Drupala. A jak budować konstrukcję dalej? Przy użyciu narzędzia, które przez jednych uwielbiane i kochane, a przez innych znienawidzone i wyśmiewane w licznych memach, np. „w C++ o błędach powie nam kompilator, w PHP klient” :). Mowa oczywiście o języku PHP, który dominuje na rynku stron internetowych, zostawiając konkurencję daleko w tyle. Drupal Developer powinien znać język PHP w stopniu bardzo dobrym, pozwalającym na swobodne pisanie samo tłumaczącego się kodu zorientowanego obiektowo. Powinien również potrafić korzystać z frameworków, a w szczególności z Symfony, bo to własnie na nim oparty jest najnowszy Drupal 8, a w niedalekiej przyszłości Drupal 9.

Eksportowanie konfiguracji

Drupal 8 jako CMS oferuje rozbudowany panel administracyjny, w którym wiele rzeczy można ustawiać poprzez proste czynności dodawania, edycji czy usuwania elementów. Możesz konfigurować wygląd poszczególnych stron, czy składać je z gotowych bloczków. Potrzebujesz dodać funkcjonalność bloga? W Drupalu w prosty sposób możemy ‘wyklikać’ wszystko, co potrzebujemy. Począwszy od typów pól w poście, przez wygląd dla użytkownika, po gotowe listy wpisów wraz z zaawansowanymi opcjami filtracji. 

Dla użytkownika końcowego jest to potężne narzędzie. Jednak wyobrażasz sobie proces developmentu, w którym trzeba wszystko osobno wyklikać? Drupal Developerowi zostaje przypisany task, z którego wnioskuje, że należy na stronie klienta dołożyć moduł bloga. Programista skonfigurował na swojej lokalnej wersji strony wszystko przez panel administracyjny, dopisał style CSS, skrypty JS oraz stworzył dedykowane moduły do Drupala na potrzeby funkcjonalności bloga. Następnym krokiem jest zrobienie tego samego na wersji testowej. Dogranie zmian do GITa i pobranie ich na serwerze to kwestia kilku chwili. 

Ale co z konfiguracją, którą programista ‘wyklikał’ przez panel i zmiany są nie w plikach, a w bazie danych? Wyklikać je jeszcze raz? Na serwerze klienta kolejny? Oczywiście że nie! Nie dość że to nudne, to dodatkowo musimy tę samą pracę wykonywać kilkukrotnie, co mija się z celem, a przede wszystkim może generować błędy! Drupal w celu uproszczenia tego procesu posiada opcję exportu i importu plików konfiguracyjnych. Jeśli raz coś ustawimy w panelu admina na jeden wersji strony, możemy wszystko wyeksportować, a następnie zaimportować na innej instancji Drupala, co znacznie przyśpiesza proces wdrażania zmian i jest stanem przetestowanym przez klienta.

Jakie inne umiejętności okażą się przydatne dla Drupal Developera?

GIT i CI

Pewnie wielu z Was kojarzy słynną frazę “In case of fire…”, której używa się również przy projektach opartych o Drupala. W dzisiejszych czasach repozytoria kodu wraz z systemami CI to standard w każdej firmie z branży IT. Duże projekty wymagają zaangażowania wielu specjalistów Drupala, zarówno Front, jak i Back-End Developerów, a dzięki systemom CI mogą często weryfikować zmiany poprzez budowanie środowisk, wykonywanie testów, czy weryfikowanie ‘Coding Standard”.

API

W dobie dzisiejszego internetu ciężko o aplikację webową, która działa samodzielnie, nie integrując się z innymi systemami, w celu wymiany z nimi informacji. Wymiana danych pomiędzy systemami musi przebiegać według określonych reguł tak, aby obie strony mogły się porozumieć. Zbiór takich reguł nosi nazwę API. Drupal Developer powinien umieć integrować serwis poprzez API z zewnętrznymi systemami. Zazwyczaj sprowadza się to do prześledzenia dokumentacji, na bazie której tworzone są dedykowane moduły dla Drupala. Powinien również potrafić stworzyć API, na potrzeby własnej aplikacji (na przykład dedykowana integracja drupala z Elasticsearch lub backend’u Drupala z frontem Vue.js) lub w celu wymiany danych z innymi systemami zamawiającego.

Jak zacząć przygodę z Drupalem?

Zaczynając przygodę z Drupalem, programista w pierwszej kolejności powinien poznać system od strony administracyjnej. Powinien rozumieć jego standardowe opcje konfiguracyjne, tak aby wiedzieć, co można uzyskać bez ingerencji w kod strony. Dobrym podejściem jest prześledzenie konfiguracji już istniejącej strony opartej o Drupala z zainstalowanymi modułami i uzupełnionymi zawartościami. Pozwala to na poznanie metodyki pracy z Drupalem i nabrania dobrych praktyk pracy z tym systemem. Jeśli nie mamy dostępu do takiej strony, możemy oczywiście rozpocząć naukę Drupala od jego czystej instalacji. Warto wtedy zwrócić uwagę na kilka głównych elementów, które będą przydatne w każdej pracy z systemem.

Encje

Jednym z głównych elementów Drupala są encje, z których możemy wyróżnić główne typy: węzły, słowniki, użytkowników i bloki:

  • Węzły (ang. node) to rodzaje zawartości, które składamy z różnego typu pól. Przykładem może być post z bloga, zazwyczaj składający się z podstawowych elementów, które w Drupalu definiujemy jako pola: tytuł, treść, kategoria, autor, itp. 
  • Słowniki (ang. taxonomy) w uproszczeniu możemy powiedzieć, że są specjalną wersją wersją node’a opisywanego powyżej. Często używa się ich również do tworzenia rodzajów zawartości i odwołując się do przykładu z postem blogowym, w większości przypadków słownikiem będzie pole typu kategoria.
  • Użytkownicy podobnie jak w innych systemach służą przede wszystkim do określania uprawnień i stopnia dostępu do systemu. Oczywiście użytkowników w Drupalu, tak jak inne encje możemy rozbudowywać zgodnie z naszymi potrzebami na przykład o dodatkowe pola.
  • Bloki możemy zdefiniować jako pudełka posiadające różnego rodzaju zawartości, które można wyświetlać w zdefiniowanych przez programistę obszarach serwisu.

Widoki

Kolejnym ważnym elementem w Drupalu są widoki. Pozwalają one na prezentację użytkownikowi zawartości dodanych przez administratora lub inną uprawnioną osobę. Dobry Drupal Developer powinien znać ich zastosowanie, wiedzieć, jak z nich korzystać oraz jak je konfigurować w celu wyświetlenia tylko określonych treści w zdefiniowanej formie. Drupal udostępnia szereg opcji do zarządzania formą prezentacji danych dla użytkownika końcowego, jednak prędzej czy później programista będzie musiał zmienić strukturę HTML szablonu, dodać do niego element lub go zmodyfikować. W tym celu przyda się mu wiedza z zakresu systemu szablonów TWIG.

Moduły

Nie możemy zapominać o modułach. Podobnie jak w WordPress, Drupal umożliwia rozszerzanie jego możliwości, przez instalowanie dodatkowych modułów, udostępnianych za darmo przez międzynarodową społeczność Drupal Developerów. To właśnie na nich powinien skupić się młody programista. Analiza kodu modułów, pozwoli nie tylko na zrozumieniu podejścia do pisania rozszerzeń i ich poprawnej struktury, ale również na poznanie możliwości, które udostępnia core Drupala. W szczególności warto prześledzić najbardziej popularne modułu, które dzięki pracy wielu doświadczonych programistów mogą być również dobrym źródłem do poznania dobrych praktyk programistycznych PHP, konwencji nazewnictwa i pisania ‘self explained code’.

 

Jaka jest przyszłość Drupala? 

Wielkimi krokami zbliża się Drupal oznaczony numerkiem 9. Czy będzie to rewolucja? W pewnych kwestiach tak, w inny po prostu płynne przejście na nowe wersje PHP czy na Symfony 4.4. Jak przygotować się na te nowości? Drupal Developer powinien śledzić na bieżąco zmiany wprowadzane w kolejnych wydaniach Drupala 8, a przesiadka na Drupal 9 zgodnie z zapowiedziami będzie niezauważalna, o ile wcześniej zadbamy o wyeliminowanie kodu oznaczonego jako deprecated (jak serwis entityQuery).

Na co innego warto zwrócić uwagę, aby być konkurencyjnym na rynku Drupal Developerów? Śledząc obecny rozwój rynku e-commerce, warto zainteresować się modułem Commerce, który pozwala w oparciu o Drupala budować platformy sklepowe zarówno dla branży B2C, jak i B2B. Przy tej okazji warto również połączyć commerce ze wspominanym wcześniej Vue.js i zainteresować się rozwiązaniem Vue Storefront w kontekście Drupala. Będąc przy temacie Vue Storefront nie sposób wspomnieć ogólnie o PWA, które coraz bardziej zyskuje na popularności, dzięki rynkowi urządzeń mobilnych.

Podsumowanie

Jak widać, Drupal to potężne narzędzie, którego potencjał w pełni może wykorzystać programista, który nie ogranicza się do znajomości tylko jednego języka. To dobry system dla osób, które chcą łączyć znajomość PHP z JS, budować duże systemy, platformy i aplikacje. Stack technologiczny potrzebny do pracy Drupal Developera jest szeroki, ale czy właśnie nie takie systemy są dla nas programistów najlepsze?


Źródło ilustracji: unsplash.com

Zapraszamy do dyskusji

Patronujemy

 
 
More Stories
engineering capacity
Wszystko zaczyna się od Engineering Capacity. Testy wydajnościowe w chmurze