Dlaczego Twoja kolejna aplikacja powinna bazować na platformie Drupal?
1. Dlaczego Twoja kolejna aplikacja
powinna bazować na platformie
Drupal?
Grzegorz Bartman
Twitter: @grzegorzbartman
E-mail: grzegorz.bartman@droptica.com
2. Czym jest Drupal?
Drupal to platforma do tworzenia aplikacji internetowych
Za pomocą systemu Drupal oraz
tysięcy modułów można budować takie
aplikacje internetowe jak:
●Sklepy internetowe
●Serwisy z aktualnościami
●Intranety i extranety
●Bazy wiedzy
●Strony korporacyjne
●Serwisy społecznościowe
●Systemy rezerwacji
Dries Buytaert – autor systemu Drupal
www.droptica.com
strona 2/61
3. Drupal jest używany przez firmy
i organizacje z całego świata
http://www.whitehouse.gov/
http://www.economist.com/
http://www.mbca.org/
http://www.nokiasiemensnetworks.com/
http://about.van.fedex.com/
http://research.nokia.com/
http://www.allegrogroup.com
http://mcdonalds.com.au/
www.droptica.com
https://events.jftc.nato.int/
https://drupal.org/case-studies
strona 3/61
4. Drupal jest na licencji Open Source
Klient otrzymuje dostęp do
całego kodu źródłowego
aplikacji
Nie ma opłat licencyjnych za
korzystanie z platformy Drupal
oraz tysięcy modułów
dostępnych na stronie
www.drupal.org
www.droptica.com
strona 4/61
5. PHP i MySQL
Drupal jest napisany w PHP i korzysta z
bazy danych MySQL/MariaDB – działa
na większości serwerów hostingowych
Drupal działa na darmowym
serwerze Apache, ale także
na serwerach Nginx, IIS,
Lighttpd
www.droptica.com
strona 5/61
6. Społeczność
System Drupal jest rozwijany od 2001 roku
Aktualna wersja systemu – 7
Wersja 8 będzie wydana w na
początku 2014 roku
Drupal.org to:
- 24 000 modułów
- 1 800 szablonów
- 600 dystrybucji Drupala
- 29 000 programistów
W Polsce społeczność drupalowa
spotyka się na corocznych konferencjach
DrupalCamp Wrocław
http://dcwroc.pl
http://2012.dcwroc.pl
www.droptica.com
strona 6/61
7. Dlaczego klienci chwalą Drupala?
Prosty interfejs zarządzania
treścią w systemie
Szybkie wykonanie aplikacji
dzięki tysiącom darmowych
modułów i rozbudowanemu API
Możliwość integracji z
innymi systemami w firmie
Niższe koszty wdrożenia w
porównaniu z komercyjnymi
systemami
Praktycznie nieograniczone
możliwości rozbudowy systemu
www.droptica.com
System sprawdzony w wielu
wdrożeniach na całym
świecie, co potwierdza jego
solidność i niezawodność.
strona 7/61
8. Elementy składowe Drupala (1)
Entity
Fields
Node
Node types:
Boolean
Car
Page
News
Users
File
Image
Image
Engine size
Job
Description
Taxonomy
Vocabularies
Tags
Custom entities
(for example: Drupal Commerce module)
www.droptica.com
Text
Cities
Term reference
Node reference
User reference
Field collection
News categories
strona 8/61
11. Dlaczego programiści chwalą Drupala?
Entity API – pozwala na
tworzenie encji do
przechowywania danych w
systemie
Fields API – umożliwia
rozbudowanie struktury encji
przez przeglądarkę
internetową, bez konieczności
pisania kodu
Views – generator zapytań
SQL – za pomocą
przeglądarki można pobierać
dowolne informacje z bazy
danych i prezentować je w
dowolnej formie dla
użytkowników (HTML, JSON,
XML, PDF, XLS, inne)
Rules – moduł oparty o
strukturę
Zdarzenie-Warunek-Akcja
(Event Condition Action ECA).
Pozwala wyklikać akcje, które
mają być wykonywane przy
konkretnych zdarzeniach
systemowych (np. wysyłanie
e-mail po dodaniu treści do
systemu)
www.droptica.com
strona 11/61
12. Fields API
Klikając tworzymy strukturę danych, Drupal sam tworzy
odpowiednie tabele w bazie danych
www.droptica.com
strona 12/61
13. Views (1)
W panelu administracyjnym tworzymy widok (zapytanie SQL +
formatowanie wyświetlania).
www.droptica.com
strona 13/61
15. Views (3)
W ciągu kilku minut można wygenerować stronę pobierającą
dane z bazy danych i wyświetlającą je w wybranym formacie.
www.droptica.com
strona 15/61
18. Haki (hook)
Rdzeń Drupala
Własny moduł
Formularz dodawania
treści
Użytkownik wysłał formularz
Walidacja formularza
Zaczepiamy się
w momencie
walidacji
formularza
Tytuł treści musi być
sprawdzony
w zewnętrznej bazie danych
przed zapisaniem danych.
Zapisanie formularza
Przekierowanie do strony
www.droptica.com
W ten sposób można dowolnie
zmieniać i rozbudowywać Drupala bez
jego modyfikacji, używając własnych
modułów.
strona 18/61
22. Rules
Wysyłanie wiadomości e-mail z powiadomieniem o nowych
Samochodach dodanych do systemu – wyklikane w kilka minut
www.droptica.com
strona 22/61
25. Fields API
https://drupal.org/project/link - moduł dodaje
nowy typ pola: Link. Pole służy do
przechowywania adresów stron
internetowych
https://api.drupal.org/api/drupal/includes!module.inc/group/hooks/7 hook_field_*
www.droptica.com
strona 25/61
29. Forms API (1)
W Drupalu do definiowania formularzy używamy tablic PHP.
Jak modyfikować formularze? → hook_form_alter()
https://api.drupal.org/api/drupal/developer%21topics%21forms_api_reference.html/7
www.droptica.com
strona 29/61
30. Forms API (2)
Własne formularze
https://api.drupal.org/api/drupal/developer%21topics%21forms_api_reference.html/7
www.droptica.com
strona 30/61
34. Services (4)
Potrzebujesz więcej opcji w Services?
●https://drupal.org/project/services_views
●Hooki: https://drupal.org/node/783460
www.droptica.com
strona 34/61
35. System szablonów
Wszystkie elementy kodu HTML generowane
przez rdzeń Drupala oraz moduły mogą być
nadpisane
Dedykowany plik dla strony /mypage:
page--mypage.tpl.php
Dedykowany plik dla node typu car:
node--car.tpl.php
Dedykowany plik dla pola field_body w rodzaju
zawartości Car:
field--body--car.tpl.php
Funkcje w pliku template.php pozwalają na
nadpisywanie lub dodawanie zmiennych, np:
●template_preprocess_page(&$variables,
$hook)
●template_preprocess_node(&$variables)
https://drupal.org/node/171194
www.droptica.com
strona 35/61
36. Szablony bazowe
●
Lista wszystkich szablonów: https://drupal.org/project/Themes
Szablony w Drupalu mają możliwość dziedziczenia dlatego często używa się szablonów bazowych i
na ich podstawie tworzy własne
●
●
Najpopularniejsze szablony bazowe
●
https://drupal.org/project/zen
●
https://drupal.org/project/omega
●
https://drupal.org/project/adaptivetheme
●
https://drupal.org/project/fusion
●
https://drupal.org/project/bootstrap
●
https://drupal.org/project/basic
www.droptica.com
strona 36/61
37. There's module for that
Poszukaj gotowego modułu
zanim zaczniesz pisać własny!
Im mniej własnego kodu tym
mniejsze prawdopodobieństwo
błędów w aplikacji
Jak szukać?
●Wyszukiwarka na drupal.org nie
daje dobrych wyników
●http://drupalmodules.com
●Google.pl → site:drupal.org
www.droptica.com
strona 37/61
38. Moduł Examples
Jeśli zdecydujesz się na napisanie własnego modułu sprawdź przykłady
w module https://drupal.org/project/examples
www.droptica.com
strona 38/61
39. Drush
Drush pozwala na zarządzanie Drupalem z poziomu konsoli
Instalacja w Debian/Ubuntu: apt-get install drush
Przykładowe komendy:
●Pobieranie modułu devel: drush dl devel
●Czyszczenie cache: drush cc all
●Uruchomienie crona: drush cron
●Aktualizacja bazy: drush updb
●Wszystkie polecenia: drush help
www.droptica.com
strona 39/61
40. hook_update_N
Hook służy do aktualizacji bazy danych. Można go wykorzystać do
zarządzania wersjami aplikacji opartej na Drupalu.
Hook jest wywoływany podczas uruchomienia skrypty /update.php
Hook o zadanym numerze (np.. mymodule_update_7101) wykona się tylko
raz (nie zostanie ponownie wywołany po uruchomieniu procesu na stronie
/update.php)
Więcej:
http://designhammer.com/blog/managing-drupal-site-updates-hookupdaten
www.droptica.com
strona 40/61
41. Features
Moduł Features https://drupal.org/project/features pozwala na zapisywanie
ustawień Drupala, rodzajów zawartości, widoków, pól w plikach (specjalne
moduły).
Opcja eksportu wszystkich ustawień z bazy danych do kodu pozwala na
użycie wersjonowania plików (GIT, SVN) do zarządzania aplikacja i ułatwia
pracę w grupie programistów.
W połączeniu z Drush można zbudować środowisko do automatycznego
budowania aplikacji oraz przenoszenia wersji aplikacji pomiędzy serwerami.
Przykład skonfigurowanego serwera:
https://drupal.org/project/droptica_devserver
www.droptica.com
strona 41/61
42. Obsługa wielu domen
●
Multisite (core)
●
●
●
Jeden katalog z plikami
Drupala
Osobne bazy danych dla
każdej domeny (opcja
współdzielenia
wybranych tabel)
Każda domena ma
swoich użytkowników I
administratorów
www.droptica.com
●
Domain Access Module
●
●
●
Jeden katalog z plikami
Drupala
Jedna baza danych
Jedna baza
użytkowników, jeden
panel zarządzania
stronami
strona 42/61
43. Serwer
Przy dużych aplikacjach istnieje konieczność optymalizacji Drupala oraz serwera pod
względem wydajności.
Możliwości Drupala:
●Integracja z Memcache https://drupal.org/project/memcache
●Integracja z Varnish https://drupal.org/project/varnish
●Integracja z Solr https://drupal.org/project/search_api_solr
●Obsługa baz danych Master/Slave https://drupal.org/node/1952990
●Content delivery network https://drupal.org/project/cdn
https://drupal.org/project/storage_api
●Mongodb https://drupal.org/project/mongodb
●Redis https://drupal.org/project/redis
www.droptica.com
strona 43/61
44. Aegir
Aegir pozwala na zarządzanie wieloma stronami opartymi o Drupala
Bardzo pomaga w pracy jeśli zarządzamy dużą ilością podobnych stron.
Więcej:
http://www.youtube.com/watch?v=NE5b5qZ4vto
http://www.aegirproject.org/
www.droptica.com
strona 44/61
45. Środowiska programistyczne
Wszystkie popularne środowiska programistyczne mają
rozszerzenia ułatwiające pracę z Drupalem
Eclipse https://drupal.org/project/eclipse
https://drupal.org/node/75242
Netbeans https://drupal.org/project/netbeans
Sublime
http://realityloop.com/blog/2012/08/09/drupal-development-using-s
ublime-text-2-5-steps
www.droptica.com
strona 45/61
46. Możliwości (1)
Podczas tej prezentacji przedstawiłem 6 modułów
●Devel
●Views (w rdzeniu Drupala 8)
●Rules
●Link
●Commerce
●Services
www.droptica.com
strona 46/61
52. Słabe strony systemu (1)
Szybkie tworzenie skalowalnych
aplikacji możliwe jest w Drupalu tylko
przez doświadczonych
programistów. Osoby z małym
doświadczeniem zbudują aplikację
na Drupalu ale jej użytkowanie i
rozbudowa nie będą wygodne, co
przełoży się na wyższe koszty
utrzymania aplikacji oraz
niezadowolenie klienta
●Realizacja w Drupalu interfejsu
użytkownika projektowanego (layout
w PSD) bez udziału osoby znającej
budowę Drupala może być
czasochłonna z uwagi na pewną
narzuconą strukturę prezentacji
danych.
●
www.droptica.com
strona 52/61
53. Słabe strony systemu (2)
W początkowej fazie nauki Drupala warto mieć kontakt z doświadczonym programistą
Drupala. Taka osoba szybciej pomoże w rozwiązywaniu problemów niż najlepsza
książka czy dokumentacja.
www.droptica.com
strona 53/61
57. Dystrybucje
http://openatrium.com - praca w grupie
●https://drupal.org/project/commerce_kickstart - sklep oparty o moduł Drupal
Commerce z przykładową konfiguracją
●https://drupal.org/project/openpublish - publikacja treści, artykułów
●https://drupal.org/project/commons - budowanie społeczności
●https://drupal.org/project/erpal - CRM, Project management, document
management, employee management, calendars, idp
●https://drupal.org/project/civicrm_starterkit - dystrybucja oparta o CiviCRM
●https://drupal.org/project/panopoly - bazowa platforma do budowania
serwisów w oparciu o moduł Panels, pozwala na wygodną edycję
zawartości stron, na Panopoly oparte jest OpenAtrium 2
●https://drupal.org/project/distributions - lista dystrybucji
●
www.droptica.com
strona 57/61
59. Podsumowanie
Wybierając platformę Drupal
otrzymujesz:
●Zadowolenie użytkowników (klienta)
- System prosty i wygodny w obsłudze,
krótki czas realizacji, brak opłat
licencyjnych
●Zadowolenie programistów – dużo
modułów i rozbudowane API pozwala
łatwo i przyjemnie pracować nad
rozbudową aplikacji
www.droptica.com
strona 59/61