Struktura i własności systemu zarządzania treścią Drupal

2,534 views

Published on

Struktura i własności systemu zarządzania treścią Drupal

Published in: Software
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,534
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
8
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Struktura i własności systemu zarządzania treścią Drupal

  1. 1. Struktura i własności systemu zarządzania treścią Drupal Grzegorz Bartman
  2. 2. Development Wydajność Migracja do Drupala SEO UX & Design Szkolenia Wsparcie Konsultacje Audyty Co: Technologie webowe Jak: Drupal, Open Source, Agile Od kiedy: 2008 rok (jako Droptica od 2013 roku, wcześniej jako Advanteo i Openbit) Kto i gdzie: +10 osób, 2 miasta (Wrocław, Gdańsk) Dla kogo: NATO, Allegro Group, PAYU, YDP, DIALOG USA, UK, Niemcy, Dania, Australia www.droptica.com
  3. 3. Drupal Evangelists Tworzenie serwisów internetowych: od 2001 roku Technologie: PHP, HTML, CSS, JavaScript, jQuery, Java, C++, Qt, Linux (Desktop i Server), Linux on embedded systems. https://drupal.org/user/363120 ponad 5 lat na drupal.org. Kontakt: http://twitter.com/grzegorzbartman grzegorz.bartman@droptica.com Grzegorz Bartman
  4. 4. Dlaczego Drupal? Struktura systemu Problemy z Drupalem Przyszłość Drupala www.droptica.com
  5. 5. Dlaczego Drupal?
  6. 6. Open Source Używaj do czego chcesz, jak chcesz, na zawsze Analizuj i zrozum co właściwie używasz Modyfikuj, poprawiaj, spraw aby było lepsze Dziel się, udostępniaj, zwracaj swoją pracę do społeczności
  7. 7. Czym jest Drupal? CMS Twórz, aktualizuj, organizuj treści w swoim serwisie internetowym. Application Framework Twórz inne aplikacja za pomocą Drupala
  8. 8. Co można zrobić za pomocą Drupala? Sklepy internetowe Serwisy z aktualnościami Intranety i extranety Bazy wiedzy Strony korporacyjne Serwisy społecznościowe Systemy rezerwacji Aplikacje webowe
  9. 9. Dlaczego Biznes wybiera Drupala? Biznes nie lubi niesprawdzonych technologii Drupal jest rozwijany od 2001 roku Niskie ryzyko niepowodzenia wdrożenia Szybszy czas dostarczenia produktu na rynek Integracja z innymi systemami
  10. 10. Media Rozrywka Sektor publiczny Wyższa edukacja ICT Kto używa Drupala
  11. 11. Drupal w liczbach Liczba serwisów internetowych używających Drupala 1 500 000+ Możliwości rozbudowy 26 000+ darmowych modułów Globalnie sprawdzony Używany w 228 krajach Społeczność 1 000 000+ użytkowników na drupal.org Aktywny rozwój systemu i modułów 33 000+ programistów na drupal.org Eksperckie usługi drupalowe Tysiące firm na całym świecie
  12. 12. Statystyki wykorzystania Drupala trends.builtwith.com Top 10k sites w3techs.com .gov sites http://w3techs.com/technologies/segmentation/tld-gov-/content_management
  13. 13. Jak zbudowany jest Drupal?
  14. 14. Rdzeń, moduły, szablony Rdzeń (core) Moduły Szablony Moduły Szablony Drupal.org Biblioteki Moduły Szablony Własne kody
  15. 15. Struktura systemu Page News Job Entity Node - Node types: Users Tags Taxonomy - Vocabularies Cities News categories Fields Description Boolean File Image Term reference Node reference User reference Field collection Car Image Custom entities (for example: Drupal Commerce module) Engine size Text
  16. 16. Elementy interfejsu Drupala
  17. 17. Najważniejsze moduły i API Entity API Tworzenie encji do przechowywania danych w systemie Fields API 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)
  18. 18. Fields
  19. 19. Views - konfiguracja
  20. 20. Views – podgląd zapytania
  21. 21. Strona utworzona modułem Views W ciągu kilku minut można wygenerować stronę pobierającą dane z bazy danych i wyświetlającą je w wybranym formacie.
  22. 22. Hooks (haki) Formularz dodawania treści Walidacja formularza Użytkownik wysłał formularz Zapisanie formularza Przekierowanie do strony Tytuł treści musi być sprawdzony w zewnętrznej bazie danych przed zapisaniem danych. Rdzeń Drupala Własny moduł Zaczepiamy się w momencie walidacji formularza
  23. 23. Hooks (haki) https://api.drupal.org/api/drupal/includes%21module.inc/group/hooks/7
  24. 24. Views API hook_views_data Możliwość wyświetlania danych z dowolnej tabeli w bazie danych hook_views_query_alter Modyfikowanie zapytań SQL generowanych przez Views ● https://api.drupal.org/api/views/views.api.php/group/views_hooks/7
  25. 25. Rules Wysyłanie wiadomości e-mail z powiadomieniem o nowych Samochodach dodanych do systemu – skonfigurowane w kilka minut bez pisania żadnego kodu PHP Zdarzenie Warunki Akcja
  26. 26. Rules API Własne zdarzenia np. po zapisaniu danych do własnej tabeli w bazie danych Własne warunki Własne akcje http://drupalcontrib.org/api/drupal/contributions!rules!rules.api.php/group/rules_hooks/7
  27. 27. Fields API Własne pola (field) Definiowanie pól o wymaganej strukturze w bazie danych Pola można wykorzystywać w dowolnych encjach Przykład: https://drupal.org/project/link
  28. 28. Entity API Definiowanie własnej tabeli w bazie danych do przechowywania informacji o encji Poprawa wydajności Własne encje można wyświetlać za pomocą modułu Views Do własnych encji można dodawać pola (fields) Własne encje są widoczne w module Rules
  29. 29. Użytkownicy i uprawnienia Użytkownicy (admin, joe, steve) Role (anonymous, authenticated, moderator, editor) Uprawnienia (access user profiles, create article content, access comments) hook_perm Definiowanie własnych uprawnień
  30. 30. Ustawienia uprawnień Rozbudowany system uprawnień pozwala na dowolne zarządzanie dostępem do wybranych części systemu.
  31. 31. Formularze Moduły Entityform Webform API Tablica w PHP, która jest zamieniana na kod HTML $form['dates']['event_date_from'] = array( '#type' => 'date_popup', '#title' => t('Event date from'), '#default_value' => date($dateformat), '#required' => TRUE, '#date_timezone' => date_default_timezone(), '#date_format' => $dateformat, '#date_year_range' => '-3:+3', );
  32. 32. Integracja Drupal core XML RPC Drupal LDAP Active Directory Aplikacja mobilna Dowolny system z webservice Moduł Services REST, JSON, JSON-RPC, SOAP, AMF
  33. 33. Szablony http://drupal.org/project/project_theme Mało gotowych i ładnych szablonów Dużo szablonów bazowych do budowania własnych szablonów Bootstrap, Foundation, Zen (zen- grids), Omega https://drupal.org/node/171194
  34. 34. 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→
  35. 35. Przykłady dla developerów https://drupal.org/project/examples jak używać hooki z rdzenia Drupala https://drupal.org/project/model własne encje
  36. 36. 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 Zarządzanie Drupalem z konsoli = możliwość wygodnego zastosowania Continuous Integration
  37. 37. hook_update_N Hook służy do aktualizacji bazy danych. Można go wykorzystać do zarządzania wersjami aplikacji. Hook o zadanym numerze (np.. mymodule_update_7101) wykona się tylko raz Przydatne w Continuous Integration Więcej: http://designhammer.com/blog/managing-drupal-site-updates-hookupdaten
  38. 38. Przechowywanie ustawień Domyślnie Drupal trzyma ustawienia w bazie danych Plusy: Łatwa zmiana konfiguracji przez przeglądarkę Minusy: Problem z pracą w zespole programistów i przenoszeniem ustawień pomiędzy różnymi środowiskami Rodzaje zawartości, Ustawienia pól, Widoki, Zmienne systemowe
  39. 39. 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. Features + Drush + hook_update_N – komplet narzędzi do Continuous Integration oraz „Code driven development” w Drupalu Przykład skonfigurowanego serwera: https://drupal.org/project/droptica_devserver
  40. 40. 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 ● Domain Access Module ● Jeden katalog z plikami Drupala ● Jedna baza danych ● Jedna baza użytkowników, jeden panel zarządzania stronami
  41. 41. Serwer Przy dużych serwisach 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
  42. 42. 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/
  43. 43. Baza danych Database abstraction layer https://api.drupal.org/api/drupal/includes!database!database.inc/group/database/7 MySQL MariaDB PostgreSQL Oracle MS SQL
  44. 44. Środowisko 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-subli PHP Storm inne
  45. 45. 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
  46. 46. Możliwości Drupala Podczas tej prezentacji przedstawiłem 5 modułów ● Views (w rdzeniu Drupala 8) ● Rules ● Link ● Commerce ● Services
  47. 47. Możliwości Drupala drupal.org +22 000 darmowych modułów rozwijanych przez +33 000 developerów
  48. 48. Drupal Moduły Mniej własnego kodu→ Mniej czasu na code review Mniej kodu Mniej błędów→ Szybsze i tańsze tworzenie serwisu lub aplikacji 90% Drupal + moduły 10% coding
  49. 49. Problemy
  50. 50. Brak MVC Problem dla programistów MVC Hooki zamiast dziedziczenia klas Wszystkie funkcje z modułów są dostępne w każdym innym module Drupal 8 z komponentami Symfony
  51. 51. Diabeł tkwi w szczegółach Tanie funkcjonalności (moduły) Drogie szczegóły Dopracowanie interfejsu Błędy w modułach 2 moduły kolidują ze sobą
  52. 52. Wiedza Brak rozeznania w modułach oraz Brak znajomości API Często przekłada się na niepowodzenie projektu
  53. 53. Konfiguracja w bazie danych Drupal do uruchomienia wymaga złożonej bazy danych (frameworki mogą być uruchamiane bez bazy danych) Moduł Features
  54. 54. Ładowanie 100% modułów Ładowanie 100% modułów przy kazdym wywołaniu strony Wydzielanie kodów do plików .inc Cache'owanie stron, widoków, bloków Problem rozwiązany w Drupal 8 ( Symfony2's Routing component)
  55. 55. JOIN, JOIN, JOIN, …. Każde pole tworzy osobną tabelę w bazie danych Pobranie encji (np.. node) z dużą ilością pól tworzy duże zapytanie SQL Rozwiązanie: Własne encje z atrybutami w jednej tabeli
  56. 56. Przyszłość Drupala
  57. 57. 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-alpha12 2014-06-11
  58. 58. Cykl życia Drupala
  59. 59. Nowe technologie w 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
  60. 60. Nauka Drupala
  61. 61. Internet ● http://drupal.org ● https://api.drupal.org ● http://drupalmodules.com ● http://drupal.pl ● http://www.drupalcampwroclaw.pl/videos ● http://drupalidzienastudia.pl ● http://3drupal.pl ● http://nodeone.se/sv/learn-drupal ● http://dropbucket.org/ ● http://www.droptica.pl/zasoby ● http://www.drupalday.pl
  62. 62. Książki
  63. 63. Pytania?
  64. 64. Dziękuję za uwagę Grzegorz Bartman https://twitter.com/grzegorzbartman Grzegorz.Bartman@droptica.com www.droptica.com

×