Podstawy programowania w Drupalu - Drupal idzie na studia - Jarosław Sobiecki
-
Upload
grzegorz-bartman -
Category
Technology
-
view
1.037 -
download
2
description
Transcript of Podstawy programowania w Drupalu - Drupal idzie na studia - Jarosław Sobiecki
Podstawy programowania w DrupaluDrupal idzie na studia II
19 marca 2013
Jarosław Sobiecki,Senior software developer
Agenda
WprowadzeniePlan zajęćProjekt
Niezbędne narzędziaEdytor tekstu / IDEKlient bazy danychModuł Devel
ArchitekturaOgólne spojrzenieHooks
DokumentacjaAPIMateriały wideoKsiążki
Wprowadzenie
WprowadzeniePlan zajęćProjekt
Niezbędne narzędziaEdytor tekstu / IDEKlient bazy danychModuł Devel
ArchitekturaOgólne spojrzenieHooks
DokumentacjaAPIMateriały wideoKsiążki
Plan zajęć
Na tych zajęciach nauczyć się mamy:I Tworzenia modułów w Drupalu 7I Pracy z najważniejszymi podsystemami DrupalaI Interakcji z bazą danychI Tworzenia interfejsu użytkownikaI Korzystanie z technologi AJAXI Rozszerzania funkcjonalności innych modułów (np. Rules).
Mikro projekt
Poznając kolejne funkcje Drupala 7, będziemy powoli dążyć do implementacjiprostej aplikacji webowej - prosty czat, oparty na technologi AJAX. Mikrospecyfikacja:I Czat wyświetla wiadomości dodawane przez użytkownikówI Użytkownicy mogą dodawać swoje wiadomości do czatuI Czat wykrywać będzie słowa obraźliwe, i wysyłać informację do administratoraI Czat będzie zawierał prosty panel administracyjny, pozwalający na usuwanie
wiadomości
Niezbędne narzędzia
WprowadzeniePlan zajęćProjekt
Niezbędne narzędziaEdytor tekstu / IDEKlient bazy danychModuł Devel
ArchitekturaOgólne spojrzenieHooks
DokumentacjaAPIMateriały wideoKsiążki
Edytor tekstu / IDE
Drupal opiera się na technologiach PHP oraz JavaScript. Potrzebujemynarzędzia do edycji kodu:I Eclipse z wtyczką PDT. Integracja z Drupalem tutaj.I NETBeans. Integracja z Drupalem tutaj.I Wasz ulubiony edytor tekstu (VIM, Emacs, Sublime, etc. . . )
Klient bazy danych
Do pracy z bazą danych, będziemy potrzebowali jednego z dostępnych klientówmysql:I Stary dobry PHPMyAdminI MySQL workbenchI Heidi SQLI Klient tekstowyI Wasz ulubiony.
Moduł devel
Moduł devel to podstawowe narzędzie deweloperskie po stronie drupala, którepozwala z jednej strony dostać się do dodatkowych informacji po stronieinterfejsu, jak i rozszerza API programisty o kilka użytecznych funkcjidebugujących.
Ćwiczenie 1I Pobierz ze strony http://drupal.org/project/devel moduł devel.I Zainstaluj go.I Na podstronie admin/structure/block włącz bloki Development,ExecutePHP,Switch user.
Ćwiczenie 2I W boksie Execute PHP Code, uruchom następujący
kod: global $user; dsm($user);I Wypróbuj: global $user; kpr($user);I Wypróbuj: global $user; debug($user);I W ustawieniach devel/settings włącz opcję Display query log. Sprawdź
wyniki.
Architektura
WprowadzeniePlan zajęćProjekt
Niezbędne narzędziaEdytor tekstu / IDEKlient bazy danychModuł Devel
ArchitekturaOgólne spojrzenieHooks
DokumentacjaAPIMateriały wideoKsiążki
Komponenty cz. 1Można o Drupalu myśleć tak. . .
Rysunek: http://www.ent.iastate.edu/it/Intro to Drupal 7 Architecture.pdf
Komponenty cz. 2
. . . Lub tak
Rysunek: http://www.ent.iastate.edu/it/Intro to Drupal 7 Architecture.pdf
Obsługa requestów w Drupalu
1. Zimny start Drupala (dostęp do sesji, bazy danych, konfiguracji)2. Zapytanie, obsługuje dalej podsytem menu3. 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 funkcji6. Argumenty z URL, zamieniane są na struktury danych7. Wykonywany jest page callback.8. Generowany jest komplet informacji potrzebnych do wygenerowania strony9. Taka struktura, trafia do szablonu strony (odpowiedzialnego za wygląd)
10. Wyrenderowana strona wraca do użytkownika.
Hooks cz. 1
Podstawową ideą architektury Drupala są hooki. Można o nich myśleć jakoo mechanizmie obsługi wewnętrznych zdarzeń w Drupalu. Takim zdarzeniemmoże być ładowanie treści, operacje na użytkowniku, generowanie strony, dostępdo 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 biznesowamodule_invoke_all(’nasz_hook’, $dane);...
Przykładowa implementacja takiego hooka:/*** Implementacja hook_nasz_hook()*/function modul_nasz_hook($dane) {dsm(’Yahoo!!!’);}
Hooks cz. 2
I Hooki to potężne narzędzie, ale też nieumiejętnie używane, może byćniebezpieczne.
I Nadużywanie mechanizmu, kończy się spaghetii code.I Inny przykład użycia: obsługa zdarzeń (np. zapisywanie treści). Implementacja
wzorca Observer.I Modyfikacja obiektów przed przetworzeniem (wzorzec Decorator).
Hooks cz. 3
I Za pomocą hooków, można zmieniać zachowanie innych modułów, bezmodyfikacji ich kodu.
I Hooki, umożliwiają również zmianę zachowania samego Drupala (core).I Często mówi się, że w Drupalu nie tworzy się aplikacji. Drupala kształtuje się,
tak by odpowiadał naszym zastosowaniom
Cokolwiek by się nie działo. . .
. . . pamiętajcie o kociakach.
Dokumentacja
WprowadzeniePlan zajęćProjekt
Niezbędne narzędziaEdytor tekstu / IDEKlient bazy danychModuł Devel
ArchitekturaOgólne spojrzenieHooks
DokumentacjaAPIMateriały wideoKsiążki
Dokumentacja API - część 1
Jedną z zalet Drupala, to bardzo dobra dokumentacja.http://api.drupal.org to absolutnie podstawowe i niezbędne źródłowiedzy każdego programisty DrupalaI Dokumentacja architektury i podsystemów DrupalaI Dokumentacja APII Opis hook-ówI Przykłady
Ćwiczenie 3I Korzystając z wyszukiarki, znajdź dokumentację funkcji format_dateI Korzystając z wyszukiwarki, znajdź dokumentację hook_formI Korzystając z wyszukiwarki, znajdź przykład użycia hook_form
Dokumentacja API - część 2
Dodatkowym źrodłem danych jest http://drupalcontrib.orgI Dokumentacja wygenerowana na podstawie kodów najpopularniejszych
modułów contribowychI Gorsza jakość, niż api.drupal.org, ale dalej użyteczne
Materiały wideo
I Drupalize me (płatne, ale wysokiej jakości)I tutr.tv (bezpłatne)
Książki
Wydano sporo, dobrych książek. Ja szczególnie polecam:I Pro Drupal Developer (wyd. en, pl).I Learning Drupal 7 module development (wyd. en)
Inne
I Drupal answers (Bardzo aktywne, polecam).I Stack overflow (Czasami tutaj też się zdarzy się znaleźć odpowiedź)I DokumentacjaI IRC: #drupal, #drupal-support
Pytania?jaroslaw[kropka]sobiecki[na]mediaregionalne[kropka]pl