struktura i własności systemu zarządzania treścią drupal
DESCRIPTION
Struktura i własności systemu zarządzania treścią DrupalTRANSCRIPT
Struktura i własności systemu zarządzania treścią Drupal
Grzegorz Bartman
DevelopmentWydajność
Migracja do DrupalaSEO
UX & DesignSzkoleniaWsparcie
KonsultacjeAudyty
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
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/[email protected]
Grzegorz Bartman
Dlaczego Drupal?Struktura systemuProblemy z DrupalemPrzyszłość Drupala
www.droptica.com
Dlaczego Drupal?
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
Czym jest Drupal?
CMS
Twórz, aktualizuj, organizuj treści w
swoim serwisie internetowym.
Application Framework
Twórz inne aplikacja za pomocą Drupala
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
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
Media Rozrywka Sektor publiczny Wyższa edukacja ICT
Kto używa Drupala
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
Statystyki wykorzystania Drupala
trends.builtwith.comTop 10k sites
w3techs.com.gov sites
http://w3techs.com/technologies/segmentation/tld-gov-/content_management
Jak zbudowany jest Drupal?
Rdzeń, moduły, szablony
Rdzeń (core)
Moduły
Szablony
Moduły
Szablony
Drupal.org
Biblioteki
Moduły
Szablony
Własne kody
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
Elementy interfejsu Drupala
Najważniejsze moduły i APIEntity APITworzenie encji do przechowywania danych w systemie
Fields API Rozbudowanie struktury encji przez przeglądarkę internetową, bez konieczności pisania kodu
ViewsGenerator 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)
RulesModuł 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)
Fields
Views - konfiguracja
Views – podgląd zapytania
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.
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 danychprzed zapisaniem danych.
Rdzeń Drupala Własny moduł
Zaczepiamy sięw momenciewalidacjiformularza
Hooks (haki)
https://api.drupal.org/api/drupal/includes%21module.inc/group/hooks/7
Views API
hook_views_dataMożliwość wyświetlania danych z dowolnej tabeli w bazie danych
hook_views_query_alterModyfikowanie zapytań SQL generowanych przez Views
●https://api.drupal.org/api/views/views.api.php/group/views_hooks/7
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
Rules API
Własne zdarzenianp. 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
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
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
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ń
Ustawienia uprawnień
Rozbudowany system uprawnień pozwala na dowolne zarządzanie dostępem do wybranych części systemu.
Formularze
Moduły
EntityformWebform
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', );
Integracja
Drupal core
XML RPC
Drupal
LDAPActive Directory
Aplikacja mobilna
Dowolny systemz webservice
Moduł Services
REST, JSON, JSON-RPC, SOAP, AMF
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
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→
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
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
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
Przechowywanie ustawień
Domyślnie Drupal trzyma ustawienia w bazie danychPlusy:
Ł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
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
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
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
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/
Baza danych
Database abstraction layer
https://api.drupal.org/api/drupal/includes!database!database.inc/group/database/7
MySQL
MariaDB
PostgreSQL
Oracle
MS SQL
Ś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-sublime-text-2-5-steps
PHP Storm
inne
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
Możliwości Drupala
Podczas tej prezentacji przedstawiłem 5 modułów●Views (w rdzeniu Drupala 8)●Rules●Link●Commerce●Services
Możliwości Drupala
drupal.org
+22 000 darmowych modułów
rozwijanych przez +33 000 developerów
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
Problemy
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
Diabeł tkwi w szczegółach
Tanie funkcjonalności(moduły)
Drogie szczegółyDopracowanie interfejsu
Błędy w modułach2 moduły kolidują ze sobą
Wiedza
Brak rozeznania w modułach
oraz
Brak znajomości API
Często przekłada się na niepowodzenie
projektu
Konfiguracja w bazie danych
Drupal do uruchomienia wymaga złożonej bazy danych
(frameworki mogą być uruchamiane bez bazy danych)
Moduł Features
Ł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)
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
Przyszłość Drupala
Historia
Drupal 1.0 – 2001-01-15Drupal 5.0 – 2007-01-15Drupal 6.0 – 2008-02-13Drupal 7.0 – 2011-01-05Drupal 8.0 – 2014-??drupal 8.0-alpha12 2014-06-11
Cykl życia Drupala
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
Nauka Drupala
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
Książki
Pytania?
Dziękuję za uwagę
Grzegorz Bartman
https://twitter.com/grzegorzbartman
www.droptica.com