podstawy programowania w drupalu - drupal idzie na studia - jarosław sobiecki

Post on 02-Dec-2014

1.038 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

Podstawy programowania w Drupalu - Drupal idzie na studia - Jarosław Sobiecki www.drupalidzienastudia.pl

TRANSCRIPT

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)

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

top related