...

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

by grzegorz-bartman

on

Report

Category:

Software

Download: 0

Comment: 0

1,654

views

Comments

Description

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

Transcript

  • 1. Struktura i własności systemu zarządzania treścią Drupal Grzegorz Bartman
  • 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. 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. Dlaczego Drupal? Struktura systemu Problemy z Drupalem Przyszłość Drupala www.droptica.com
  • 5. Dlaczego Drupal?
  • 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. Czym jest Drupal? CMS Twórz, aktualizuj, organizuj treści w swoim serwisie internetowym. Application Framework Twórz inne aplikacja za pomocą Drupala
  • 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. 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. Media Rozrywka Sektor publiczny Wyższa edukacja ICT Kto używa Drupala
  • 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. Statystyki wykorzystania Drupala trends.builtwith.com Top 10k sites w3techs.com .gov sites http://w3techs.com/technologies/segmentation/tld-gov-/content_management
  • 13. Jak zbudowany jest Drupal?
  • 14. Rdzeń, moduły, szablony Rdzeń (core) Moduły Szablony Moduły Szablony Drupal.org Biblioteki Moduły Szablony Własne kody
  • 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. Elementy interfejsu Drupala
  • 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. Fields
  • 19. Views - konfiguracja
  • 20. Views – podgląd zapytania
  • 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. 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. Hooks (haki) https://api.drupal.org/api/drupal/includes%21module.inc/group/hooks/7
  • 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. 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. 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. 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. 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. 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. Ustawienia uprawnień Rozbudowany system uprawnień pozwala na dowolne zarządzanie dostępem do wybranych części systemu.
  • 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. Integracja Drupal core XML RPC Drupal LDAP Active Directory Aplikacja mobilna Dowolny system z webservice Moduł Services REST, JSON, JSON-RPC, SOAP, AMF
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. Ś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. 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. Możliwości Drupala Podczas tej prezentacji przedstawiłem 5 modułów ● Views (w rdzeniu Drupala 8) ● Rules ● Link ● Commerce ● Services
  • 47. Możliwości Drupala drupal.org +22 000 darmowych modułów rozwijanych przez +33 000 developerów
  • 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. Problemy
  • 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. 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. Wiedza Brak rozeznania w modułach oraz Brak znajomości API Często przekłada się na niepowodzenie projektu
  • 53. Konfiguracja w bazie danych Drupal do uruchomienia wymaga złożonej bazy danych (frameworki mogą być uruchamiane bez bazy danych) Moduł Features
  • 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. 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. Przyszłość Drupala
  • 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. Cykl życia Drupala
  • 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. Nauka Drupala
  • 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. Książki
  • 63. Pytania?
  • 64. Dziękuję za uwagę Grzegorz Bartman https://twitter.com/grzegorzbartman Grzegorz.Bartman@droptica.com www.droptica.com
  • Fly UP