2. Development
Wydajność
Migracja do Drupala
SEO
UX & Design
Szkolenia
Wsparcie
Konsultacje
Audyty
Co: Technologie webowe
Jak: Drupal, Open Source, Agile
Od kiedy: 2008 rok (jako Droptica od 2013
roku, wcześniej jako Advanteo i Openbit)
Kto i gdzie: +10 osób, 2 miasta (Wrocław,
Gdańsk)
Dla kogo:
NATO, Allegro Group, PAYU, YDP, DIALOG
USA, UK, Niemcy, Dania, Australia
www.droptica.com
3. Drupal Evangelists
Tworzenie serwisów internetowych: od 2001 roku
Technologie: PHP, HTML, CSS, JavaScript, jQuery, Java, C++, Qt,
Linux (Desktop i Server), Linux on embedded systems.
https://drupal.org/user/363120 ponad 5 lat na drupal.org.
Kontakt:
http://twitter.com/grzegorzbartman
grzegorz.bartman@droptica.com
Grzegorz Bartman
6. Open Source
Używaj do czego chcesz, jak chcesz, na zawsze
Analizuj i zrozum co właściwie używasz
Modyfikuj, poprawiaj, spraw aby było lepsze
Dziel się, udostępniaj, zwracaj swoją pracę do
społeczności
7. Czym jest Drupal?
CMS
Twórz, aktualizuj,
organizuj treści w
swoim serwisie
internetowym.
Application
Framework
Twórz inne aplikacja za
pomocą Drupala
8. Co można zrobić za pomocą Drupala?
Sklepy internetowe
Serwisy z
aktualnościami
Intranety i extranety
Bazy wiedzy
Strony korporacyjne
Serwisy
społecznościowe
Systemy rezerwacji
Aplikacje webowe
9. Dlaczego Biznes wybiera Drupala?
Biznes nie lubi niesprawdzonych technologii
Drupal jest rozwijany od 2001 roku
Niskie ryzyko niepowodzenia wdrożenia
Szybszy czas dostarczenia produktu na rynek
Integracja z innymi systemami
11. Drupal w liczbach
Liczba serwisów internetowych
używających Drupala
1 500 000+
Możliwości rozbudowy 26 000+ darmowych modułów
Globalnie sprawdzony Używany w 228 krajach
Społeczność 1 000 000+ użytkowników na
drupal.org
Aktywny rozwój systemu i
modułów
33 000+ programistów na
drupal.org
Eksperckie usługi drupalowe Tysiące firm na całym świecie
17. Najważniejsze moduły i API
Entity API
Tworzenie encji do
przechowywania danych w
systemie
Fields API
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)
21. Strona utworzona modułem Views
W ciągu kilku minut można wygenerować stronę pobierającą
dane z bazy danych i wyświetlającą je w wybranym formacie.
22. Hooks (haki)
Formularz dodawania
treści
Walidacja formularza
Użytkownik wysłał formularz
Zapisanie formularza
Przekierowanie do strony
Tytuł treści musi być
sprawdzony
w zewnętrznej bazie danych
przed zapisaniem danych.
Rdzeń Drupala Własny moduł
Zaczepiamy się
w momencie
walidacji
formularza
24. Views API
hook_views_data
Możliwość wyświetlania danych z
dowolnej tabeli w bazie danych
hook_views_query_alter
Modyfikowanie zapytań SQL
generowanych przez Views
●
https://api.drupal.org/api/views/views.api.php/group/views_hooks/7
25. Rules
Wysyłanie wiadomości e-mail z powiadomieniem o nowych
Samochodach dodanych do systemu – skonfigurowane w kilka
minut bez pisania żadnego kodu PHP
Zdarzenie
Warunki
Akcja
26. Rules API
Własne zdarzenia
np. po zapisaniu danych do własnej tabeli w
bazie danych
Własne warunki
Własne akcje
http://drupalcontrib.org/api/drupal/contributions!rules!rules.api.php/group/rules_hooks/7
27. Fields API
Własne pola (field)
Definiowanie pól o wymaganej strukturze w
bazie danych
Pola można wykorzystywać w dowolnych
encjach
Przykład: https://drupal.org/project/link
28. Entity API
Definiowanie własnej tabeli w bazie danych do
przechowywania informacji o encji
Poprawa wydajności
Własne encje można wyświetlać za pomocą
modułu Views
Do własnych encji można dodawać pola (fields)
Własne encje są widoczne w module Rules
29. Użytkownicy i uprawnienia
Użytkownicy
(admin, joe, steve)
Role
(anonymous, authenticated,
moderator, editor)
Uprawnienia
(access user profiles,
create article content,
access comments)
hook_perm
Definiowanie własnych uprawnień
34. 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→
36. 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
Zarządzanie Drupalem z konsoli = możliwość wygodnego zastosowania Continuous Integration
37. hook_update_N
Hook służy do aktualizacji bazy danych.
Można go wykorzystać do zarządzania wersjami aplikacji.
Hook o zadanym numerze (np.. mymodule_update_7101) wykona się tylko raz
Przydatne w Continuous Integration
Więcej:
http://designhammer.com/blog/managing-drupal-site-updates-hookupdaten
38. Przechowywanie ustawień
Domyślnie Drupal trzyma ustawienia w bazie danych
Plusy:
Łatwa zmiana konfiguracji przez przeglądarkę
Minusy:
Problem z pracą w zespole programistów i przenoszeniem ustawień
pomiędzy różnymi środowiskami
Rodzaje zawartości, Ustawienia pól, Widoki, Zmienne systemowe
39. 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.
Features + Drush + hook_update_N – komplet narzędzi do Continuous
Integration oraz „Code driven development” w Drupalu
Przykład skonfigurowanego serwera:
https://drupal.org/project/droptica_devserver
40. 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
●
Domain Access Module
●
Jeden katalog z
plikami Drupala
●
Jedna baza danych
●
Jedna baza
użytkowników,
jeden panel
zarządzania
stronami
41. Serwer
Przy dużych serwisach 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
42. 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/
43. Baza danych
Database abstraction layer
https://api.drupal.org/api/drupal/includes!database!database.inc/group/database/7
MySQL
MariaDB
PostgreSQL
Oracle
MS SQL
44. Środowisko 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-subli
PHP Storm
inne
45. 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
46. Możliwości Drupala
Podczas tej prezentacji przedstawiłem 5 modułów
●
Views (w rdzeniu Drupala 8)
●
Rules
●
Link
●
Commerce
●
Services
48. Drupal
Moduły Mniej własnego kodu→
Mniej czasu na code review
Mniej kodu Mniej błędów→
Szybsze i tańsze
tworzenie serwisu lub aplikacji
90% Drupal + moduły
10% coding
50. Brak MVC
Problem dla programistów MVC
Hooki zamiast dziedziczenia klas
Wszystkie funkcje z modułów są dostępne w
każdym innym module
Drupal 8 z komponentami Symfony
51. Diabeł tkwi w szczegółach
Tanie funkcjonalności
(moduły)
Drogie szczegóły
Dopracowanie interfejsu
Błędy w modułach
2 moduły kolidują ze sobą
53. Konfiguracja w bazie danych
Drupal do uruchomienia wymaga złożonej
bazy danych
(frameworki mogą być uruchamiane bez
bazy danych)
Moduł Features
54. Ładowanie 100% modułów
Ładowanie 100% modułów przy kazdym
wywołaniu strony
Wydzielanie kodów do plików .inc
Cache'owanie stron, widoków, bloków
Problem rozwiązany w Drupal 8
( Symfony2's Routing component)
55. JOIN, JOIN, JOIN, ….
Każde pole tworzy osobną tabelę w bazie
danych
Pobranie encji (np.. node) z dużą ilością pól
tworzy duże zapytanie SQL
Rozwiązanie:
Własne encje z atrybutami w jednej tabeli