Successfully reported this slideshow.
Your SlideShare is downloading. ×

Dlaczego Twoja kolejna aplikacja powinna bazować na platformie Drupal?

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Loading in …3
×

Check these out next

1 of 61 Ad

More Related Content

Similar to Dlaczego Twoja kolejna aplikacja powinna bazować na platformie Drupal? (20)

Advertisement

Recently uploaded (20)

Advertisement

Dlaczego Twoja kolejna aplikacja powinna bazować na platformie Drupal?

  1. 1. Dlaczego Twoja kolejna aplikacja powinna bazować na platformie Drupal? Grzegorz Bartman Twitter: @grzegorzbartman E-mail: grzegorz.bartman@droptica.com
  2. 2. Czym jest Drupal? Drupal to platforma do tworzenia aplikacji internetowych Za pomocą systemu Drupal oraz tysięcy modułów można budować takie aplikacje internetowe jak: ●Sklepy internetowe ●Serwisy z aktualnościami ●Intranety i extranety ●Bazy wiedzy ●Strony korporacyjne ●Serwisy społecznościowe ●Systemy rezerwacji Dries Buytaert – autor systemu Drupal www.droptica.com strona 2/61
  3. 3. Drupal jest używany przez firmy i organizacje z całego świata http://www.whitehouse.gov/ http://www.economist.com/ http://www.mbca.org/ http://www.nokiasiemensnetworks.com/ http://about.van.fedex.com/ http://research.nokia.com/ http://www.allegrogroup.com http://mcdonalds.com.au/ www.droptica.com https://events.jftc.nato.int/ https://drupal.org/case-studies strona 3/61
  4. 4. Drupal jest na licencji Open Source Klient otrzymuje dostęp do całego kodu źródłowego aplikacji Nie ma opłat licencyjnych za korzystanie z platformy Drupal oraz tysięcy modułów dostępnych na stronie www.drupal.org www.droptica.com strona 4/61
  5. 5. PHP i MySQL Drupal jest napisany w PHP i korzysta z bazy danych MySQL/MariaDB – działa na większości serwerów hostingowych Drupal działa na darmowym serwerze Apache, ale także na serwerach Nginx, IIS, Lighttpd www.droptica.com strona 5/61
  6. 6. Społeczność System Drupal jest rozwijany od 2001 roku Aktualna wersja systemu – 7 Wersja 8 będzie wydana w na początku 2014 roku Drupal.org to: - 24 000 modułów - 1 800 szablonów - 600 dystrybucji Drupala - 29 000 programistów W Polsce społeczność drupalowa spotyka się na corocznych konferencjach DrupalCamp Wrocław http://dcwroc.pl http://2012.dcwroc.pl www.droptica.com strona 6/61
  7. 7. Dlaczego klienci chwalą Drupala? Prosty interfejs zarządzania treścią w systemie Szybkie wykonanie aplikacji dzięki tysiącom darmowych modułów i rozbudowanemu API Możliwość integracji z innymi systemami w firmie Niższe koszty wdrożenia w porównaniu z komercyjnymi systemami Praktycznie nieograniczone możliwości rozbudowy systemu www.droptica.com System sprawdzony w wielu wdrożeniach na całym świecie, co potwierdza jego solidność i niezawodność. strona 7/61
  8. 8. Elementy składowe Drupala (1) Entity Fields Node Node types: Boolean Car Page News Users File Image Image Engine size Job Description Taxonomy Vocabularies Tags Custom entities (for example: Drupal Commerce module) www.droptica.com Text Cities Term reference Node reference User reference Field collection News categories strona 8/61
  9. 9. Elementy składowe Drupala (2) www.droptica.com strona 9/61
  10. 10. Dlaczego programiści chwalą Drupala? www.droptica.com strona 10/61
  11. 11. Dlaczego programiści chwalą Drupala? Entity API – pozwala na tworzenie encji do przechowywania danych w systemie Fields API – umożliwia 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) www.droptica.com strona 11/61
  12. 12. Fields API Klikając tworzymy strukturę danych, Drupal sam tworzy odpowiednie tabele w bazie danych www.droptica.com strona 12/61
  13. 13. Views (1) W panelu administracyjnym tworzymy widok (zapytanie SQL + formatowanie wyświetlania). www.droptica.com strona 13/61
  14. 14. Views (2) Moduł Views automatycznie generuje odpowiednie zapytanie SQL www.droptica.com strona 14/61
  15. 15. Views (3) W ciągu kilku minut można wygenerować stronę pobierającą dane z bazy danych i wyświetlającą je w wybranym formacie. www.droptica.com strona 15/61
  16. 16. Devel (1) https://drupal.org/project/devel www.droptica.com strona 16/61
  17. 17. Devel (2) Droptica sp. z o.o. www.droptica.com strona 17/61
  18. 18. Haki (hook) Rdzeń Drupala Własny moduł Formularz dodawania treści Użytkownik wysłał formularz Walidacja formularza Zaczepiamy się w momencie walidacji formularza Tytuł treści musi być sprawdzony w zewnętrznej bazie danych przed zapisaniem danych. Zapisanie formularza Przekierowanie do strony www.droptica.com W ten sposób można dowolnie zmieniać i rozbudowywać Drupala bez jego modyfikacji, używając własnych modułów. strona 18/61
  19. 19. Haki (hook) ● https://api.drupal.org/api/drupal/includes%21module.inc/group/hooks/7 ● https://api.drupal.org/api/views/views.api.php/group/views_hooks/7 www.droptica.com strona 19/61
  20. 20. Views API (1) www.droptica.com strona 20/61
  21. 21. Views API (2) www.droptica.com strona 21/61
  22. 22. Rules Wysyłanie wiadomości e-mail z powiadomieniem o nowych Samochodach dodanych do systemu – wyklikane w kilka minut www.droptica.com strona 22/61
  23. 23. Rules API (1) www.droptica.com strona 23/61
  24. 24. Rules API (2) http://drupalcontrib.org/api/drupal/contributions!rules!rules.api.php/7 www.droptica.com strona 24/61
  25. 25. Fields API https://drupal.org/project/link - moduł dodaje nowy typ pola: Link. Pole służy do przechowywania adresów stron internetowych https://api.drupal.org/api/drupal/includes!module.inc/group/hooks/7 hook_field_* www.droptica.com strona 25/61
  26. 26. Entity API https://drupal.org/project/commerce - moduł do tworzenia sklepu internetowego. Moduł definiuje nowe encje w Drupalu, np. „Order” www.droptica.com strona 26/61
  27. 27. Uprawnienia (1) Rozbudowany system uprawnień pozwala na dowolne zarządzanie dostępem do treści. www.droptica.com strona 27/61
  28. 28. Uprawnienia (2) if (user_access('administer my module') { //do something } www.droptica.com strona 28/61
  29. 29. Forms API (1) W Drupalu do definiowania formularzy używamy tablic PHP. Jak modyfikować formularze? → hook_form_alter() https://api.drupal.org/api/drupal/developer%21topics%21forms_api_reference.html/7 www.droptica.com strona 29/61
  30. 30. Forms API (2) Własne formularze https://api.drupal.org/api/drupal/developer%21topics%21forms_api_reference.html/7 www.droptica.com strona 30/61
  31. 31. Services https://drupal.org/project/services www.droptica.com strona 31/61
  32. 32. Services (2) https://drupal.org/project/services www.droptica.com strona 32/61
  33. 33. Services (3) www.droptica.com strona 33/61
  34. 34. Services (4) Potrzebujesz więcej opcji w Services? ●https://drupal.org/project/services_views ●Hooki: https://drupal.org/node/783460 www.droptica.com strona 34/61
  35. 35. System szablonów Wszystkie elementy kodu HTML generowane przez rdzeń Drupala oraz moduły mogą być nadpisane Dedykowany plik dla strony /mypage: page--mypage.tpl.php Dedykowany plik dla node typu car: node--car.tpl.php Dedykowany plik dla pola field_body w rodzaju zawartości Car: field--body--car.tpl.php Funkcje w pliku template.php pozwalają na nadpisywanie lub dodawanie zmiennych, np: ●template_preprocess_page(&$variables, $hook) ●template_preprocess_node(&$variables) https://drupal.org/node/171194 www.droptica.com strona 35/61
  36. 36. Szablony bazowe ● Lista wszystkich szablonów: https://drupal.org/project/Themes Szablony w Drupalu mają możliwość dziedziczenia dlatego często używa się szablonów bazowych i na ich podstawie tworzy własne ● ● Najpopularniejsze szablony bazowe ● https://drupal.org/project/zen ● https://drupal.org/project/omega ● https://drupal.org/project/adaptivetheme ● https://drupal.org/project/fusion ● https://drupal.org/project/bootstrap ● https://drupal.org/project/basic www.droptica.com strona 36/61
  37. 37. 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 www.droptica.com strona 37/61
  38. 38. Moduł Examples Jeśli zdecydujesz się na napisanie własnego modułu sprawdź przykłady w module https://drupal.org/project/examples www.droptica.com strona 38/61
  39. 39. 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 www.droptica.com strona 39/61
  40. 40. hook_update_N Hook służy do aktualizacji bazy danych. Można go wykorzystać do zarządzania wersjami aplikacji opartej na Drupalu. Hook jest wywoływany podczas uruchomienia skrypty /update.php Hook o zadanym numerze (np.. mymodule_update_7101) wykona się tylko raz (nie zostanie ponownie wywołany po uruchomieniu procesu na stronie /update.php) Więcej: http://designhammer.com/blog/managing-drupal-site-updates-hookupdaten www.droptica.com strona 40/61
  41. 41. 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. W połączeniu z Drush można zbudować środowisko do automatycznego budowania aplikacji oraz przenoszenia wersji aplikacji pomiędzy serwerami. Przykład skonfigurowanego serwera: https://drupal.org/project/droptica_devserver www.droptica.com strona 41/61
  42. 42. 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 www.droptica.com ● Domain Access Module ● ● ● Jeden katalog z plikami Drupala Jedna baza danych Jedna baza użytkowników, jeden panel zarządzania stronami strona 42/61
  43. 43. Serwer Przy dużych aplikacjach 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 www.droptica.com strona 43/61
  44. 44. 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/ www.droptica.com strona 44/61
  45. 45. Środowiska 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-s ublime-text-2-5-steps www.droptica.com strona 45/61
  46. 46. Możliwości (1) Podczas tej prezentacji przedstawiłem 6 modułów ●Devel ●Views (w rdzeniu Drupala 8) ●Rules ●Link ●Commerce ●Services www.droptica.com strona 46/61
  47. 47. Możliwości (2) Na stronie drupal.org jest ponad 22 000 modułów www.droptica.com strona 47/61
  48. 48. Przegląd modułów (1) https://drupal.org/project/admin_menu ●https://drupal.org/project/backup_migrate ●https://drupal.org/project/devel_themer ●https://drupal.org/project/search_krumo ●https://drupal.org/project/feeds ●https://drupal.org/project/migrate ●https://drupal.org/project/field_collection ●https://drupal.org/project/l10n_update ●https://drupal.org/project/addressfield ●https://drupal.org/project/context ●https://drupal.org/project/date ●https://drupal.org/project/filefield_sources ●https://drupal.org/project/WYSIWYG ●https://drupal.org/project/media ●https://drupal.org/project/menu_breadcrumb ●https://drupal.org/project/panels ●https://drupal.org/project/pathauto ●https://drupal.org/project/smtp ●https://drupal.org/project/views_bulk_operations ●https://drupal.org/project/views_php ●https://drupal.org/project/views_slideshow ● www.droptica.com strona 48/61
  49. 49. Przegląd modułów (2) https://drupal.org/project/flexslider ●https://drupal.org/project/webform ●https://drupal.org/project/print ●https://drupal.org/project/colorbox ●https://drupal.org/project/imagecache_actions ●https://drupal.org/project/nodequeue ●https://drupal.org/project/revisioning ●https://drupal.org/project/globalredirect ●https://drupal.org/project/metatag ●https://drupal.org/project/page_title ●https://drupal.org/project/redirect ●https://drupal.org/project/xmlsitemap ●https://drupal.org/project/captcha ●https://drupal.org/project/recaptcha ●https://drupal.org/project/libraries ●https://drupal.org/project/transliteration ●https://drupal.org/project/token ●https://drupal.org/project/strongarm ●https://drupal.org/project/fboauth ●https://drupal.org/project/facebook_rules ● ● www.droptica.com strona 49/61
  50. 50. Przegląd modułów (3) https://drupal.org/project/drupalforfirebug ●https://drupal.org/project/oauth ●https://drupal.org/project/quicktabs ●https://drupal.org/project/popup_message ●https://drupal.org/project/service_links ●https://drupal.org/project/userpoints ●https://drupal.org/project/email ●https://drupal.org/project/simplenews ●https://drupal.org/project/menu_attributes ●https://drupal.org/project/flag ●https://drupal.org/project/auto_nodetitle ●https://drupal.org/project/archive ●https://drupal.org/project/diff ●https://drupal.org/project/menu_block ●https://drupal.org/project/site_map ●https://drupal.org/project/coder ●https://drupal.org/project/masquerade ●https://drupal.org/project/fivestar ●https://drupal.org/project/calendar ●https://drupal.org/project/privatemsg ● www.droptica.com strona 50/61
  51. 51. Przegląd modułów (4) https://drupal.org/project/stringoverrides ●https://drupal.org/project/og ●https://drupal.org/project/boost ●https://drupal.org/project/securepages ●https://drupal.org/project/tagadelic ●https://drupal.org/project/content_access ●https://drupal.org/project/acl ●https://drupal.org/project/simple_access ●https://drupal.org/project/views_data_export ●https://drupal.org/project/views_load_more ●https://drupal.org/project/picture ●https://drupal.org/project/breakpoints ●https://drupal.org/project/ldap ● http://drupalmodules.com/top-downloads www.droptica.com strona 51/61
  52. 52. Słabe strony systemu (1) Szybkie tworzenie skalowalnych aplikacji możliwe jest w Drupalu tylko przez doświadczonych programistów. Osoby z małym doświadczeniem zbudują aplikację na Drupalu ale jej użytkowanie i rozbudowa nie będą wygodne, co przełoży się na wyższe koszty utrzymania aplikacji oraz niezadowolenie klienta ●Realizacja w Drupalu interfejsu użytkownika projektowanego (layout w PSD) bez udziału osoby znającej budowę Drupala może być czasochłonna z uwagi na pewną narzuconą strukturę prezentacji danych. ● www.droptica.com strona 52/61
  53. 53. Słabe strony systemu (2) W początkowej fazie nauki Drupala warto mieć kontakt z doświadczonym programistą Drupala. Taka osoba szybciej pomoże w rozwiązywaniu problemów niż najlepsza książka czy dokumentacja. www.droptica.com strona 53/61
  54. 54. Historia Drupal 1.0 – 2001-01-15 ●Drupal 5.0 – 2007-01-15 ●Drupal 6.0 – 2008-02-13 ●Drupal 7.0 – 2011-01-05 ●Drupal 8.0 – 2014-?? ● drupal 8.0-alpha4 2013-10-18 ● www.droptica.com strona 54/61
  55. 55. Drupal 8 ● ● ● ● ● Object oriented code Configuration management (configuration in files) Mobile Breakpoint API Multilangual ● ● ● ● ● ● ● Views Web Services PHPUnit Backbone Twig Symfony (HttpKernel) CKEditor http://www.sensiolabs.co.uk/ - strona oparta o Drupal 8! ●http://www.youtube.com/watch?v=8uhNFoOnz_g DrupalCon Prague 2013 Keynote ●http://www.palantir.net/blog/how-i-learned-stop-worrying-and-love-drupal-8 http://www.palantir.net/sites/default/files/Drupal8ATL.pdf ● www.droptica.com strona 55/61
  56. 56. Drupal w sieci http://drupal.org ●https://api.drupal.org ●http://drupalmodules.com ●http://drupal.pl ●http://dcwroc.pl/videos ●http://2012.dcwroc.pl/videos ●http://drupalidzienastudia.pl ●http://3drupal.pl ●http://nodeone.se/sv/learn-drupal ●http://dropbucket.org/ ●http://www.droptica.com/pl/blog ●http://www.drupalday.pl ● www.droptica.com strona 56/61
  57. 57. 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 ● www.droptica.com strona 57/61
  58. 58. Książki www.droptica.com strona 58/61
  59. 59. Podsumowanie Wybierając platformę Drupal otrzymujesz: ●Zadowolenie użytkowników (klienta) - System prosty i wygodny w obsłudze, krótki czas realizacji, brak opłat licencyjnych ●Zadowolenie programistów – dużo modułów i rozbudowane API pozwala łatwo i przyjemnie pracować nad rozbudową aplikacji www.droptica.com strona 59/61
  60. 60. Pytania? www.droptica.com strona 60/61
  61. 61. Dziękuję za uwagę Grzegorz Bartman • https://twitter.com/grzegorzbartman • Grzegorz.Bartman@droptica.com www.droptica.com strona 61/61

×