CMS Drupal – Wady i zalety

 In Technicznie

Od początku mojej pracy w firmie Ermlab, jestem odpowiedzialny za systemy oparte o Drupala. Wraz z zespołem zrealizowaliśmy kilka projektów o różnym poziomie zaawansowania i różnym poziomie dopasowania do filozofii Drupala. Dało to nam pewną perspektywę pozwalającą szerzej spojrzeć na projekt i ocenić czy nadaje się on do zrobienia w tym CMS’ie.  Z jedne strony oferuje on wiele udogodnień, gotowych modułów i wtyczek z drugiej narzuca pewien sposób pracy i implementowania nowych funkcjonalności. W dzisiejszym wpisie przedstawię wam moje spojrzenie na Drupala, postaram się wyróżnić wady i zalety oraz opiszę moje doświadczenia.


Czym właściwie jest Drupal?

Drupal jest jednocześnie systemem zarządzania treścią oraz frameworkiem napisanym w języku PHP. Według wikipedii, Drupal jest używany przez ponad milion stron internetowych, czyli około 2% ze wszystkich stron internetowych na świecie. W odróżnieniu od WordPressa(aktualnie najpopularniejszego CMS’a) Drupal nadaje się niemalże do każdego rodzaju stron internetowych, zaczynając od blogów, prostych stron informacyjnych, stron korporacyjnych, rządowych aż do zaawansowanych aplikacji internetowych.

Drupala wyróżnia podział systemu na węzły(ang. node) oraz taksonomie. Węzły przechowują informacje o wszelkiego rodzaju zawartościach systemu, a taksonomie to rozbudowany moduł służący głównie do porządkowania treści wedle kategorii. Jego zastosowania są jednak znacznie szersze.

Omawiany CMS jest udostępniany na zasadach licencji GPL. Można go rozbudowywać o nowe funkcjonalności za pomocą tzw. modułów, z których zbudowany jest cały system. Niezbędne do funkcjonowania systemu (tzw. Core) są dostępne od razu po instalacji, a inne trzeba dodatkowo pobrać i zainstalować. Aktualna liczba dostępnych modułów na oficjalnej stronie Drupala to 31,581 a zatem jest w czym wybierać.


Złe dobrego początki..

Początki pracy z Drupalem nie należą do przyjemnych. Sporo czasu minęło zanim przezwyczaiłem się do metodyki jaką narzuca Drupal. System z dnia na dzień zaskakiwał mnie swoim skomplikowaniem. Wszystko szło płynnie, jeżeli znalazł się w internecie gotowy moduł na potrzeby żądanej funkcjonalności – w przeciwnym razie trzeba było napisać własny moduł. Na potrzeby pisania modułów do Drupala, trzeba zapoznać się z systemem hooków.

FDD9D2E6-EA22-42C9-9242-3A5E7BE1684E

Hook’i to pewna rodzina funkcji drupalowych, które wywoływane są kaskadowo w odpowiedniej kolejności. Dzięki hookom, moduły wchodzą w interakcje z kodem rdzenia Drupala. Pozwalają na definiowanie nowych adresów na stronie, dodawanie treści, konfigurowanie m.in bazy danych, nadpisywanie treści formularzy i wiele, wiele innych. Można je potraktować jako detektory zdarzeń, w tym sensie, że zdarzenie wyzwala akcję zawartą w hooku. Przykładowo, przy usuwaniu dowolnego węzła, zostanie wywołany hook_delete. Zaprzyjaźnienie się z ideą działania “haków” jest obowiązkowe na drodze do sprawnego tworzenia portali na Drupalu.

Przyswojenie pracy z hookami zajmuje sporo czasu, lecz z czasem zaczniesz zauważać, że było warto. Z biegiem czasu system swoimi możliwościami nagradza nas za cierpliwość.

Bazując na doświadczeniach zdobytych podczas pracy z Drupalem, postaram się w skrócie przedstawić dobre oraz złe strony systemu, oraz określić dla kogo stworzony jest Drupal.


prosDlaczego Drupal?

Open source – Drupal jest darmowy i można w pełni modyfikować kod rdzenia jak i wszystkich modułów i udostępniać swój kod.

Dostęp do większości podstawowych funkcjonalności – Czysty Drupal zaraz po zainstalowaniu zapewnia większość potrzebnych do życia strony internetowej funkcjonalności. Core Drupala zawiera system logowania i rejestracji, obsługę RSS, podstawowe rodzaje zawartości – artykułów oraz strona statyczna, rozbudowany panel administracyjny, w którym możemy zarządzać m.in. menu, rodzajami zawartości, ustawieniami systemu, uprawnieniami oraz rolami użytkownikówi wiele innych.

Moduły – Na oficjalnej stronie Drupala znajdziemy tysiące dodatkowych modułów, rozbudowujących nasz system o nowe funkcjonalności. Praktycznie wszystkie funkcjonalności o które chcielibyśmy rozszerzyć nasz system mają już swoje odzwierciedlenie w postaci modułu, który bez przeszkód możemy ściągnąć i zainstalować. Poniżej opiszę w skrócie kilka według mnie najbardziej przydatnych modułów jakie warto zainstalować do prawie każdego systemu opartego na tym CMSie.

Aktywna społeczność –  Oficjalna strona Drupala zawiera w sobie forum internetowe, system komentarzy pod modułami, gdzie społeczność Drupala aktywnie pomaga innym użytkownikom naprowadzając na właściwą drogę. Praktycznie wszystkie problemy jakie napotkałem, rozwiązałem trafiając na fora Drupala.

Idealny do stron internetowych przetwarzających duże ilości danych – Drupal jest stworzony do systemów o rozbudowanej strukturze danych, zawierających wiele ról użytkowników

Elastyczny i wszechstronny – Idealny na potrzeby systemów o złożonej funkcjonalności i wszechstronności. Zapewnia podłoże do rozbudowy systemu w przyszłości.


Wady i problemy systemu.

Stosunkowo ciężki w instalacji i konfiguracji – Instalacja i konfiguracja Drupala wymaga technicznej wiedzy. Pozostałe platoformy typu open source jak np. WordPress są łatwiejsze w obsłudze nawet dla laika.

Wymaga zaawansowanych umiejętności programowania – Pisanie własnych modułów oraz rozszerzanie systemu o nieszablonowe funkcjonalności wymaga zaawansowanej wiedzy programistycznej.

Wydajność – Doszlifowanie systemu pod względem wydajności nie jest niewykonalne, aczkolwiek wymaga sporo pracy. Budując zaawansowany system na bazie Drupala, prędzej czy później można natknąć się na problemy związane z pamięcią podręczną. Dobra konfiguracja cache’a to podstawa do uzyskania wydajności.

Niepotrzebny dla prostych stron internetowych – Tworzenie prostych stron internetowych (takich jak np. blogi) w oparciu o Drupala mija się z celem. Według mnie lepszym wyborem(rozpatrując gotowe rozwiązania) byłby wtedy WordPress. Drupal skierowany jest w ambitniejsze projekty.


module_01

5 niezbędnych modułów, które musisz znać

Devel – Moduł niezbędny każdemu programiście zawierający wiele metod usprawniających pracę nad systemem. Dostanie się do niektórych zmiennych wewnątrz sieci danych Drupala bywa kłopotliwe. No chyba, że mamy zainstalowany Devel, dzięki któremu w prosty sposób możemy wyświetlić dane w przyjaznej dla użytkownika formie.

Views – Jak sama nazwa wskazuje, moduł odpowiedzialny za widoki. Dzięki niemu możemy ‘wyklikać’ zapytania do bazy, i określić gdzie oraz w jakiej formie dane mają zostać wyświetlone. Skonstruowanie zaawansowanych widoków jest dość skomplikowane, jednak już po chwili pracy z “Viewsami” w przyjemny sposób stworzymy widok, zawierający oczekiwane przez nas pola, wyświetlony w dowolnej formie z możliwością filtrowania, odświeżanego AJAX’em itp. itd.

Field collection – Pozwala na zebranie wielu pól w jedną encję. Idealny jeżeli chcemy stworzyć byt, który posiada wiele atrybutów i gdy nasz węzeł potrzebuje wielu takich bytów.

Rules – Dzięki temu modułowi, może tworzyć akcje, które będą wywoływane podczas wykonania danej akcji, spełniając żądane warunki. Poprzez kilka kliknąć możemy np. ustawić wysyłkę maila do użytkownika X, gdy zapisze

Entity reference – Daje możliwość dowiązania do danej zawartości innego rodzaju zawartość poprzez pole typu “Entity reference”. Rozszerza również moduł Views o możliwość wyświetlania danych powiązanych z danym węzłem.


Podsumowanie

Podsumowując moje zmagania z Drupalem, muszę stwierdzić, że było warto przejść przez trudy pierwszych dni by teraz naprawdę szybko i sprawnie móc postawić strony, których budowa od podstaw zajęłaby niezliczone ilości czasu. Sam system, posiada zdecydowanie więcej zalet niż wad, i gwarantuje, że jeśli ktoś się zdecyduje zagłębić w tą technologię, nie będzie żałował poświęconych na zrozumienie hooków oraz innych smaczków drupala godzin. Omawiany CMS polecam każdemu, kto lubi wyzwania, lubi się trochę pomęczyć by następnie zostać nagrodzonym ,a odradzam osobom, które potrzebują prostej strony internetowej, bloga, bądź wizytówki. Znajdziecie do tego kilka lepszych rozwiązań. Pozdrawiam i życzę miłej pracy z Drupalem.

 

Recommended Posts