SlideShare ist ein Scribd-Unternehmen logo
1 von 27
Downloaden Sie, um offline zu lesen
Podstawy programowania w Drupalu
        Drupal idzie na studia II


            19 marca 2013


                                           Jarosław Sobiecki,
                                    Senior software developer
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
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
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).
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
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
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. . . )
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.
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.
Ć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.
Ć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.
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
Komponenty cz. 1
Moż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 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.
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!!!’);
}
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).
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
Cokolwiek by się nie działo. . .



. . . pamiętajcie o kociakach.
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
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
Ć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
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
Materiały wideo




Drupalize me (płatne, ale wysokiej jakości)
tutr.tv (bezpłatne)
Książki




Wydano sporo, dobrych książek. Ja szczególnie polecam:
 Pro Drupal Developer (wyd. en, pl).
 Learning Drupal 7 module development (wyd. en)
Inne




Drupal answers (Bardzo aktywne, polecam).
Stack overflow (Czasami tutaj też się zdarzy się znaleźć odpowiedź)
Dokumentacja
IRC: #drupal, #drupal-support
Pytania?
jaroslaw[kropka]sobiecki[na]mediaregionalne[kropka]pl

Weitere ähnliche Inhalte

Was ist angesagt?

DrupalDay & Drupal Global Training Days - Wprowadzenie do Drupala
DrupalDay & Drupal Global Training Days - Wprowadzenie do DrupalaDrupalDay & Drupal Global Training Days - Wprowadzenie do Drupala
DrupalDay & Drupal Global Training Days - Wprowadzenie do DrupalaGrzegorz Bartman
 
Podstawowe informacje o szablonach w Drupalu [openBIT]
Podstawowe informacje o szablonach w Drupalu [openBIT]Podstawowe informacje o szablonach w Drupalu [openBIT]
Podstawowe informacje o szablonach w Drupalu [openBIT]Grzegorz Bartman
 
Code driven development w Drupalu 7 | DrupalCamp Wrocław 2014
Code driven development w Drupalu 7 | DrupalCamp Wrocław 2014Code driven development w Drupalu 7 | DrupalCamp Wrocław 2014
Code driven development w Drupalu 7 | DrupalCamp Wrocław 2014Grzegorz Bartman
 
Nowości w drupal 9 i 10 [PL]
Nowości w drupal 9 i 10 [PL]Nowości w drupal 9 i 10 [PL]
Nowości w drupal 9 i 10 [PL]Droptica
 
Migrate API w Drupalu [PL]
Migrate API w Drupalu [PL]Migrate API w Drupalu [PL]
Migrate API w Drupalu [PL]Droptica
 
Uwierzytelnianie dwuetapowe (2FA) w Drupalu [PL]
Uwierzytelnianie dwuetapowe (2FA) w Drupalu [PL]Uwierzytelnianie dwuetapowe (2FA) w Drupalu [PL]
Uwierzytelnianie dwuetapowe (2FA) w Drupalu [PL]Droptica
 
Drupal jako modularny i rozszerzalny CMS [PL]
Drupal jako modularny i rozszerzalny CMS [PL]Drupal jako modularny i rozszerzalny CMS [PL]
Drupal jako modularny i rozszerzalny CMS [PL]Droptica
 
Devel - przegląd możliwości modułu [PL]
Devel - przegląd możliwości modułu [PL]Devel - przegląd możliwości modułu [PL]
Devel - przegląd możliwości modułu [PL]Droptica
 
Angular 4 pragmatycznie
Angular 4 pragmatycznieAngular 4 pragmatycznie
Angular 4 pragmatycznieSages
 
Drupal Features - Agnieszka Piłasiewicz
Drupal Features - Agnieszka PiłasiewiczDrupal Features - Agnieszka Piłasiewicz
Drupal Features - Agnieszka PiłasiewiczGrzegorz Bartman
 
HTML with a little CSS
HTML with a little CSS HTML with a little CSS
HTML with a little CSS Basia Madej
 
AADays 2015 - Jak to zrobic w JavaScript
AADays 2015 - Jak to zrobic w JavaScriptAADays 2015 - Jak to zrobic w JavaScript
AADays 2015 - Jak to zrobic w JavaScriptJacek Okrojek
 
Motywy dla WordPressa - historia prawdziwa - WordUp Katowice
Motywy dla WordPressa - historia prawdziwa - WordUp KatowiceMotywy dla WordPressa - historia prawdziwa - WordUp Katowice
Motywy dla WordPressa - historia prawdziwa - WordUp KatowiceTomasz Dziuda
 
Jak tworzyć motywy przyjazne użytkownikom i programistom - WordUp Silesia
Jak tworzyć motywy przyjazne użytkownikom i programistom - WordUp SilesiaJak tworzyć motywy przyjazne użytkownikom i programistom - WordUp Silesia
Jak tworzyć motywy przyjazne użytkownikom i programistom - WordUp SilesiaTomasz Dziuda
 

Was ist angesagt? (16)

DrupalDay & Drupal Global Training Days - Wprowadzenie do Drupala
DrupalDay & Drupal Global Training Days - Wprowadzenie do DrupalaDrupalDay & Drupal Global Training Days - Wprowadzenie do Drupala
DrupalDay & Drupal Global Training Days - Wprowadzenie do Drupala
 
Podstawowe informacje o szablonach w Drupalu [openBIT]
Podstawowe informacje o szablonach w Drupalu [openBIT]Podstawowe informacje o szablonach w Drupalu [openBIT]
Podstawowe informacje o szablonach w Drupalu [openBIT]
 
Code driven development w Drupalu 7 | DrupalCamp Wrocław 2014
Code driven development w Drupalu 7 | DrupalCamp Wrocław 2014Code driven development w Drupalu 7 | DrupalCamp Wrocław 2014
Code driven development w Drupalu 7 | DrupalCamp Wrocław 2014
 
Nowości w drupal 9 i 10 [PL]
Nowości w drupal 9 i 10 [PL]Nowości w drupal 9 i 10 [PL]
Nowości w drupal 9 i 10 [PL]
 
Migrate API w Drupalu [PL]
Migrate API w Drupalu [PL]Migrate API w Drupalu [PL]
Migrate API w Drupalu [PL]
 
Uwierzytelnianie dwuetapowe (2FA) w Drupalu [PL]
Uwierzytelnianie dwuetapowe (2FA) w Drupalu [PL]Uwierzytelnianie dwuetapowe (2FA) w Drupalu [PL]
Uwierzytelnianie dwuetapowe (2FA) w Drupalu [PL]
 
Drupal jako modularny i rozszerzalny CMS [PL]
Drupal jako modularny i rozszerzalny CMS [PL]Drupal jako modularny i rozszerzalny CMS [PL]
Drupal jako modularny i rozszerzalny CMS [PL]
 
Devel - przegląd możliwości modułu [PL]
Devel - przegląd możliwości modułu [PL]Devel - przegląd możliwości modułu [PL]
Devel - przegląd możliwości modułu [PL]
 
Grok Artykul
Grok ArtykulGrok Artykul
Grok Artykul
 
JavaScript, Moduły
JavaScript, ModułyJavaScript, Moduły
JavaScript, Moduły
 
Angular 4 pragmatycznie
Angular 4 pragmatycznieAngular 4 pragmatycznie
Angular 4 pragmatycznie
 
Drupal Features - Agnieszka Piłasiewicz
Drupal Features - Agnieszka PiłasiewiczDrupal Features - Agnieszka Piłasiewicz
Drupal Features - Agnieszka Piłasiewicz
 
HTML with a little CSS
HTML with a little CSS HTML with a little CSS
HTML with a little CSS
 
AADays 2015 - Jak to zrobic w JavaScript
AADays 2015 - Jak to zrobic w JavaScriptAADays 2015 - Jak to zrobic w JavaScript
AADays 2015 - Jak to zrobic w JavaScript
 
Motywy dla WordPressa - historia prawdziwa - WordUp Katowice
Motywy dla WordPressa - historia prawdziwa - WordUp KatowiceMotywy dla WordPressa - historia prawdziwa - WordUp Katowice
Motywy dla WordPressa - historia prawdziwa - WordUp Katowice
 
Jak tworzyć motywy przyjazne użytkownikom i programistom - WordUp Silesia
Jak tworzyć motywy przyjazne użytkownikom i programistom - WordUp SilesiaJak tworzyć motywy przyjazne użytkownikom i programistom - WordUp Silesia
Jak tworzyć motywy przyjazne użytkownikom i programistom - WordUp Silesia
 

Ähnlich wie Podstawy programowania w Drupalu - Drupal idzie na studia - Jarosław Sobiecki

Produkcja aplikacji internetowych
Produkcja aplikacji internetowychProdukcja aplikacji internetowych
Produkcja aplikacji internetowychTomasz Borowski
 
Delphi 8 .NET. Kompendium programisty
Delphi 8 .NET. Kompendium programistyDelphi 8 .NET. Kompendium programisty
Delphi 8 .NET. Kompendium programistyWydawnictwo Helion
 
Delphi 2005. 303 gotowe rozwiązania
Delphi 2005. 303 gotowe rozwiązaniaDelphi 2005. 303 gotowe rozwiązania
Delphi 2005. 303 gotowe rozwiązaniaWydawnictwo Helion
 
Ruby, Ruby on Rails 2010
Ruby, Ruby on Rails 2010Ruby, Ruby on Rails 2010
Ruby, Ruby on Rails 2010Natalia Stanko
 
Drupal Commerce - konfiguracja prostego sklepu internetowego [PL]
Drupal Commerce - konfiguracja prostego sklepu internetowego [PL]Drupal Commerce - konfiguracja prostego sklepu internetowego [PL]
Drupal Commerce - konfiguracja prostego sklepu internetowego [PL]Droptica
 
Przenieś się do kontenera, czyli korzyści z Docker i Docker Compose
Przenieś się do kontenera, czyli korzyści z Docker i Docker ComposePrzenieś się do kontenera, czyli korzyści z Docker i Docker Compose
Przenieś się do kontenera, czyli korzyści z Docker i Docker ComposeMariusz Bąk
 
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...The Software House
 
Praktyczne użycie Repository Pattern w Laravel cz. I
Praktyczne użycie Repository Pattern w Laravel cz. IPraktyczne użycie Repository Pattern w Laravel cz. I
Praktyczne użycie Repository Pattern w Laravel cz. ILaravel Poland MeetUp
 
Laravel Poznań Meetup #7 - "Praktyczne użycie Repository Pattern w Laravel cz...
Laravel Poznań Meetup #7 - "Praktyczne użycie Repository Pattern w Laravel cz...Laravel Poznań Meetup #7 - "Praktyczne użycie Repository Pattern w Laravel cz...
Laravel Poznań Meetup #7 - "Praktyczne użycie Repository Pattern w Laravel cz...HighSolutions Sp. z o.o.
 
Extjs & netzke
Extjs & netzkeExtjs & netzke
Extjs & netzkeGaldoMedia
 
CI oraz CD w złożonym projekcie o małym budżecie
CI oraz CD w złożonym projekcie o małym budżecieCI oraz CD w złożonym projekcie o małym budżecie
CI oraz CD w złożonym projekcie o małym budżecieGrzegorz Godlewski
 
Aplikacje internetowe (2010)
Aplikacje internetowe (2010)Aplikacje internetowe (2010)
Aplikacje internetowe (2010)Adrian Kalbarczyk
 
Architektura aplikacji android
Architektura aplikacji androidArchitektura aplikacji android
Architektura aplikacji androidSages
 
Jak zbudować aplikacje z wykorzystaniem funkcjonalności windows server 2016...
Jak zbudować aplikacje z wykorzystaniem funkcjonalności windows server 2016...Jak zbudować aplikacje z wykorzystaniem funkcjonalności windows server 2016...
Jak zbudować aplikacje z wykorzystaniem funkcjonalności windows server 2016...Lukasz Kaluzny
 
Delphi dla .NET. Vademecum profesjonalisty
Delphi dla .NET. Vademecum profesjonalistyDelphi dla .NET. Vademecum profesjonalisty
Delphi dla .NET. Vademecum profesjonalistyWydawnictwo Helion
 
Paleta możliwości web developera
Paleta możliwości web developeraPaleta możliwości web developera
Paleta możliwości web developeraTomasz Borowski
 
4Developers 2015: .NET 2015 - co nowego? - Michał Dudak, Future Processing
4Developers 2015: .NET 2015 - co nowego? - Michał Dudak, Future Processing4Developers 2015: .NET 2015 - co nowego? - Michał Dudak, Future Processing
4Developers 2015: .NET 2015 - co nowego? - Michał Dudak, Future ProcessingPROIDEA
 
Wzorce Repository, Unity of Work, Devexpress MVC w architekturze Asp.net MVC
Wzorce Repository, Unity of Work, Devexpress MVC  w architekturze Asp.net MVCWzorce Repository, Unity of Work, Devexpress MVC  w architekturze Asp.net MVC
Wzorce Repository, Unity of Work, Devexpress MVC w architekturze Asp.net MVCQuick-Solution
 

Ähnlich wie Podstawy programowania w Drupalu - Drupal idzie na studia - Jarosław Sobiecki (20)

Produkcja aplikacji internetowych
Produkcja aplikacji internetowychProdukcja aplikacji internetowych
Produkcja aplikacji internetowych
 
Delphi 8 .NET. Kompendium programisty
Delphi 8 .NET. Kompendium programistyDelphi 8 .NET. Kompendium programisty
Delphi 8 .NET. Kompendium programisty
 
Delphi 2005. 303 gotowe rozwiązania
Delphi 2005. 303 gotowe rozwiązaniaDelphi 2005. 303 gotowe rozwiązania
Delphi 2005. 303 gotowe rozwiązania
 
Ruby, Ruby on Rails 2010
Ruby, Ruby on Rails 2010Ruby, Ruby on Rails 2010
Ruby, Ruby on Rails 2010
 
Drupal Commerce - konfiguracja prostego sklepu internetowego [PL]
Drupal Commerce - konfiguracja prostego sklepu internetowego [PL]Drupal Commerce - konfiguracja prostego sklepu internetowego [PL]
Drupal Commerce - konfiguracja prostego sklepu internetowego [PL]
 
Przenieś się do kontenera, czyli korzyści z Docker i Docker Compose
Przenieś się do kontenera, czyli korzyści z Docker i Docker ComposePrzenieś się do kontenera, czyli korzyści z Docker i Docker Compose
Przenieś się do kontenera, czyli korzyści z Docker i Docker Compose
 
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
 
Praktyczne użycie Repository Pattern w Laravel cz. I
Praktyczne użycie Repository Pattern w Laravel cz. IPraktyczne użycie Repository Pattern w Laravel cz. I
Praktyczne użycie Repository Pattern w Laravel cz. I
 
Laravel Poznań Meetup #7 - "Praktyczne użycie Repository Pattern w Laravel cz...
Laravel Poznań Meetup #7 - "Praktyczne użycie Repository Pattern w Laravel cz...Laravel Poznań Meetup #7 - "Praktyczne użycie Repository Pattern w Laravel cz...
Laravel Poznań Meetup #7 - "Praktyczne użycie Repository Pattern w Laravel cz...
 
Extjs & netzke
Extjs & netzkeExtjs & netzke
Extjs & netzke
 
CI oraz CD w złożonym projekcie o małym budżecie
CI oraz CD w złożonym projekcie o małym budżecieCI oraz CD w złożonym projekcie o małym budżecie
CI oraz CD w złożonym projekcie o małym budżecie
 
Aplikacje internetowe (2010)
Aplikacje internetowe (2010)Aplikacje internetowe (2010)
Aplikacje internetowe (2010)
 
Tworzenie frontendowych bibliotek UI
Tworzenie frontendowych bibliotek UITworzenie frontendowych bibliotek UI
Tworzenie frontendowych bibliotek UI
 
Architektura aplikacji android
Architektura aplikacji androidArchitektura aplikacji android
Architektura aplikacji android
 
Jak zbudować aplikacje z wykorzystaniem funkcjonalności windows server 2016...
Jak zbudować aplikacje z wykorzystaniem funkcjonalności windows server 2016...Jak zbudować aplikacje z wykorzystaniem funkcjonalności windows server 2016...
Jak zbudować aplikacje z wykorzystaniem funkcjonalności windows server 2016...
 
Delphi dla .NET. Vademecum profesjonalisty
Delphi dla .NET. Vademecum profesjonalistyDelphi dla .NET. Vademecum profesjonalisty
Delphi dla .NET. Vademecum profesjonalisty
 
Paleta możliwości web developera
Paleta możliwości web developeraPaleta możliwości web developera
Paleta możliwości web developera
 
4Developers 2015: .NET 2015 - co nowego? - Michał Dudak, Future Processing
4Developers 2015: .NET 2015 - co nowego? - Michał Dudak, Future Processing4Developers 2015: .NET 2015 - co nowego? - Michał Dudak, Future Processing
4Developers 2015: .NET 2015 - co nowego? - Michał Dudak, Future Processing
 
Olga Żądło - Robot Framework
Olga Żądło - Robot FrameworkOlga Żądło - Robot Framework
Olga Żądło - Robot Framework
 
Wzorce Repository, Unity of Work, Devexpress MVC w architekturze Asp.net MVC
Wzorce Repository, Unity of Work, Devexpress MVC  w architekturze Asp.net MVCWzorce Repository, Unity of Work, Devexpress MVC  w architekturze Asp.net MVC
Wzorce Repository, Unity of Work, Devexpress MVC w architekturze Asp.net MVC
 

Mehr von Grzegorz Bartman

Automatyzacja w tworzeniu aplikacji opartych Drupala
Automatyzacja w tworzeniu aplikacji opartych DrupalaAutomatyzacja w tworzeniu aplikacji opartych Drupala
Automatyzacja w tworzeniu aplikacji opartych DrupalaGrzegorz Bartman
 
Wprowadzenie do pisania własnych modułów oraz do systemu menu.
Wprowadzenie do pisania własnych modułów oraz do systemu menu. Wprowadzenie do pisania własnych modułów oraz do systemu menu.
Wprowadzenie do pisania własnych modułów oraz do systemu menu. Grzegorz Bartman
 
WYSIWYG w Drupalu 7 - Tomasz Rychter
WYSIWYG w Drupalu 7 - Tomasz RychterWYSIWYG w Drupalu 7 - Tomasz Rychter
WYSIWYG w Drupalu 7 - Tomasz RychterGrzegorz Bartman
 
Drupal Feeds - Wiktor Burbo
Drupal Feeds - Wiktor BurboDrupal Feeds - Wiktor Burbo
Drupal Feeds - Wiktor BurboGrzegorz Bartman
 
Drupal Context - Agnieszka Cupek
Drupal Context - Agnieszka CupekDrupal Context - Agnieszka Cupek
Drupal Context - Agnieszka CupekGrzegorz Bartman
 
Szkolenie drupal-podstawy 2
Szkolenie drupal-podstawy 2Szkolenie drupal-podstawy 2
Szkolenie drupal-podstawy 2Grzegorz Bartman
 
Openbit szkolenie-drupal-podstawy 2
Openbit szkolenie-drupal-podstawy 2Openbit szkolenie-drupal-podstawy 2
Openbit szkolenie-drupal-podstawy 2Grzegorz Bartman
 
Openbit szkolenie-drupal-podstawy 2
Openbit szkolenie-drupal-podstawy 2Openbit szkolenie-drupal-podstawy 2
Openbit szkolenie-drupal-podstawy 2Grzegorz Bartman
 
Drupal 6 - podstawy - www.openbit.pl
Drupal 6 - podstawy - www.openbit.plDrupal 6 - podstawy - www.openbit.pl
Drupal 6 - podstawy - www.openbit.plGrzegorz Bartman
 

Mehr von Grzegorz Bartman (10)

Automatyzacja w tworzeniu aplikacji opartych Drupala
Automatyzacja w tworzeniu aplikacji opartych DrupalaAutomatyzacja w tworzeniu aplikacji opartych Drupala
Automatyzacja w tworzeniu aplikacji opartych Drupala
 
Wprowadzenie do pisania własnych modułów oraz do systemu menu.
Wprowadzenie do pisania własnych modułów oraz do systemu menu. Wprowadzenie do pisania własnych modułów oraz do systemu menu.
Wprowadzenie do pisania własnych modułów oraz do systemu menu.
 
WYSIWYG w Drupalu 7 - Tomasz Rychter
WYSIWYG w Drupalu 7 - Tomasz RychterWYSIWYG w Drupalu 7 - Tomasz Rychter
WYSIWYG w Drupalu 7 - Tomasz Rychter
 
Drupal Feeds - Wiktor Burbo
Drupal Feeds - Wiktor BurboDrupal Feeds - Wiktor Burbo
Drupal Feeds - Wiktor Burbo
 
Drupal Context - Agnieszka Cupek
Drupal Context - Agnieszka CupekDrupal Context - Agnieszka Cupek
Drupal Context - Agnieszka Cupek
 
Drupal 7 training - Views
Drupal 7 training - ViewsDrupal 7 training - Views
Drupal 7 training - Views
 
Szkolenie drupal-podstawy 2
Szkolenie drupal-podstawy 2Szkolenie drupal-podstawy 2
Szkolenie drupal-podstawy 2
 
Openbit szkolenie-drupal-podstawy 2
Openbit szkolenie-drupal-podstawy 2Openbit szkolenie-drupal-podstawy 2
Openbit szkolenie-drupal-podstawy 2
 
Openbit szkolenie-drupal-podstawy 2
Openbit szkolenie-drupal-podstawy 2Openbit szkolenie-drupal-podstawy 2
Openbit szkolenie-drupal-podstawy 2
 
Drupal 6 - podstawy - www.openbit.pl
Drupal 6 - podstawy - www.openbit.plDrupal 6 - podstawy - www.openbit.pl
Drupal 6 - podstawy - www.openbit.pl
 

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
  • 19. Cokolwiek by się nie działo. . . . . . pamiętajcie o kociakach.
  • 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
  • 24. Materiały wideo Drupalize me (płatne, ale wysokiej jakości) tutr.tv (bezpłatne)
  • 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