Podstawy programowania w Drupalu - Drupal idzie na studia - Jarosław Sobiecki
1. Podstawy programowania w Drupalu
Drupal idzie na studia II
19 marca 2013
Jarosław Sobiecki,
Senior software developer
2. Agenda
Wprowadzenie
Plan zajęć
Projekt
Niezbędne narzędzia
Edytor tekstu / IDE
Klient bazy danych
Moduł Devel
Architektura
Ogólne spojrzenie
Hooks
Dokumentacja
API
Materiały wideo
Książki
3. Wprowadzenie
Wprowadzenie
Plan zajęć
Projekt
Niezbędne narzędzia
Edytor tekstu / IDE
Klient bazy danych
Moduł Devel
Architektura
Ogólne spojrzenie
Hooks
Dokumentacja
API
Materiały wideo
Książki
4. Plan zajęć
Na tych zajęciach nauczyć się mamy:
Tworzenia modułów w Drupalu 7
Pracy z najważniejszymi podsystemami Drupala
Interakcji z bazą danych
Tworzenia interfejsu użytkownika
Korzystanie z technologi AJAX
Rozszerzania funkcjonalności innych modułów (np. Rules).
5. Mikro projekt
Poznając kolejne funkcje Drupala 7, będziemy powoli dążyć do implementacji
prostej aplikacji webowej - prosty czat, oparty na technologi AJAX. Mikro
specyfikacja:
Czat wyświetla wiadomości dodawane przez użytkowników
Użytkownicy mogą dodawać swoje wiadomości do czatu
Czat wykrywać będzie słowa obraźliwe, i wysyłać informację do administratora
Czat będzie zawierał prosty panel administracyjny, pozwalający na usuwanie
wiadomości
6. Niezbędne narzędzia
Wprowadzenie
Plan zajęć
Projekt
Niezbędne narzędzia
Edytor tekstu / IDE
Klient bazy danych
Moduł Devel
Architektura
Ogólne spojrzenie
Hooks
Dokumentacja
API
Materiały wideo
Książki
7. Edytor tekstu / IDE
Drupal opiera się na technologiach PHP oraz JavaScript. Potrzebujemy
narzędzia do edycji kodu:
Eclipse z wtyczką PDT. Integracja z Drupalem tutaj.
NETBeans. Integracja z Drupalem tutaj.
Wasz ulubiony edytor tekstu (VIM, Emacs, Sublime, etc. . . )
8. Klient bazy danych
Do pracy z bazą danych, będziemy potrzebowali jednego z dostępnych klientów
mysql:
Stary dobry PHPMyAdmin
MySQL workbench
Heidi SQL
Klient tekstowy
Wasz ulubiony.
9. Moduł devel
Moduł devel to podstawowe narzędzie deweloperskie po stronie drupala, które
pozwala z jednej strony dostać się do dodatkowych informacji po stronie
interfejsu, jak i rozszerza API programisty o kilka użytecznych funkcji
debugujących.
10. Ćwiczenie 1
Pobierz ze strony http://drupal.org/project/devel moduł devel.
Zainstaluj go.
Na podstronie admin/structure/block włącz bloki Development,Execute
PHP,Switch user.
11. Ćwiczenie 2
W boksie Execute PHP Code, uruchom następujący
kod: global $user; dsm($user);
Wypróbuj: global $user; kpr($user);
Wypróbuj: global $user; debug($user);
W ustawieniach devel/settings włącz opcję Display query log. Sprawdź
wyniki.
12. Architektura
Wprowadzenie
Plan zajęć
Projekt
Niezbędne narzędzia
Edytor tekstu / IDE
Klient bazy danych
Moduł Devel
Architektura
Ogólne spojrzenie
Hooks
Dokumentacja
API
Materiały wideo
Książki
13. Komponenty cz. 1
Można o Drupalu myśleć tak. . .
Rysunek: http://www.ent.iastate.edu/it/Intro to Drupal 7 Architecture.pdf
14. Komponenty cz. 2
. . . Lub tak
Rysunek: http://www.ent.iastate.edu/it/Intro to Drupal 7 Architecture.pdf
15. Obsługa requestów w Drupalu
1. Zimny start Drupala (dostęp do sesji, bazy danych, konfiguracji)
2. Zapytanie, obsługuje dalej podsytem menu
3. URL, mapowany jest do konkretnej funkcji (page callback)
4. Weryfikowany jest dostęp (access callback)
5. W razie potrzeby, ładowane są dodatkowe pliki, z definicjami funkcji
6. Argumenty z URL, zamieniane są na struktury danych
7. Wykonywany jest page callback.
8. Generowany jest komplet informacji potrzebnych do wygenerowania strony
9. Taka struktura, trafia do szablonu strony (odpowiedzialnego za wygląd)
10. Wyrenderowana strona wraca do użytkownika.
16. Hooks cz. 1
Podstawową ideą architektury Drupala są hooki. Można o nich myśleć jako
o mechanizmie obsługi wewnętrznych zdarzeń w Drupalu. Takim zdarzeniem
może być ładowanie treści, operacje na użytkowniku, generowanie strony, dostęp
do bazy danych. Ograniczone to jest tylko przez fantazję autorów modułów.
Techniczne, hooki to funkcje, których nazwy spełniają określony wzorzec.
Załużmy że gdzieś w kodzie, odwołujemy się do hooka nasz_hook:
... // Bardzo wazna logika biznesowa
module_invoke_all(’nasz_hook’, $dane);
...
Przykładowa implementacja takiego hooka:
/**
* Implementacja hook_nasz_hook()
*/
function modul_nasz_hook($dane) {
dsm(’Yahoo!!!’);
}
17. Hooks cz. 2
Hooki to potężne narzędzie, ale też nieumiejętnie używane, może być
niebezpieczne.
Nadużywanie mechanizmu, kończy się spaghetii code.
Inny przykład użycia: obsługa zdarzeń (np. zapisywanie treści). Implementacja
wzorca Observer.
Modyfikacja obiektów przed przetworzeniem (wzorzec Decorator).
18. Hooks cz. 3
Za pomocą hooków, można zmieniać zachowanie innych modułów, bez
modyfikacji ich kodu.
Hooki, umożliwiają również zmianę zachowania samego Drupala (core).
Często mówi się, że w Drupalu nie tworzy się aplikacji. Drupala kształtuje się,
tak by odpowiadał naszym zastosowaniom
20. Dokumentacja
Wprowadzenie
Plan zajęć
Projekt
Niezbędne narzędzia
Edytor tekstu / IDE
Klient bazy danych
Moduł Devel
Architektura
Ogólne spojrzenie
Hooks
Dokumentacja
API
Materiały wideo
Książki
21. Dokumentacja API - część 1
Jedną z zalet Drupala, to bardzo dobra dokumentacja.
http://api.drupal.org to absolutnie podstawowe i niezbędne źródło
wiedzy każdego programisty Drupala
Dokumentacja architektury i podsystemów Drupala
Dokumentacja API
Opis hook-ów
Przykłady
22. Ćwiczenie 3
Korzystając z wyszukiarki, znajdź dokumentację funkcji format_date
Korzystając z wyszukiwarki, znajdź dokumentację hook_form
Korzystając z wyszukiwarki, znajdź przykład użycia hook_form
23. Dokumentacja API - część 2
Dodatkowym źrodłem danych jest http://drupalcontrib.org
Dokumentacja wygenerowana na podstawie kodów najpopularniejszych
modułów contribowych
Gorsza jakość, niż api.drupal.org, ale dalej użyteczne
25. Książki
Wydano sporo, dobrych książek. Ja szczególnie polecam:
Pro Drupal Developer (wyd. en, pl).
Learning Drupal 7 module development (wyd. en)
26. Inne
Drupal answers (Bardzo aktywne, polecam).
Stack overflow (Czasami tutaj też się zdarzy się znaleźć odpowiedź)
Dokumentacja
IRC: #drupal, #drupal-support