SlideShare a Scribd company logo
1 of 64
Download to read offline
Struktura i własności systemu
zarządzania treścią Drupal
Grzegorz Bartman
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
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
Dlaczego Drupal?
Struktura systemu
Problemy z Drupalem
Przyszł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.com
Top 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 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)
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 danych
przed zapisaniem danych.
Rdzeń Drupala Własny moduł
Zaczepiamy się
w momencie
walidacji
formularza
Hooks (haki)
https://api.drupal.org/api/drupal/includes%21module.inc/group/hooks/7
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
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 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
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
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',
);
Integracja
Drupal core
XML RPC
Drupal
LDAP
Active Directory
Aplikacja mobilna
Dowolny system
z 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 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
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-subli
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óły
Dopracowanie interfejsu
Błędy w modułach
2 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-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
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
Grzegorz.Bartman@droptica.com
www.droptica.com

More Related Content

What's hot

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
 
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
 
Podstawy SEO w Drupalu 7 - Jarosław Sobiecki
Podstawy SEO w Drupalu 7 - Jarosław SobieckiPodstawy SEO w Drupalu 7 - Jarosław Sobiecki
Podstawy SEO w Drupalu 7 - Jarosław SobieckiGrzegorz 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
 
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
 
Migrate API w Drupalu [PL]
Migrate API w Drupalu [PL]Migrate API w Drupalu [PL]
Migrate API 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
 
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
 
WordUp Gdynia - Jak tworzyć motywy przyjazne użytkownikom i programistom
WordUp Gdynia - Jak tworzyć motywy przyjazne użytkownikom i programistomWordUp Gdynia - Jak tworzyć motywy przyjazne użytkownikom i programistom
WordUp Gdynia - Jak tworzyć motywy przyjazne użytkownikom i programistomTomasz Dziuda
 
4Developers 2018: Graceful Degradation kontra Progressive Enhancement (Jacek ...
4Developers 2018: Graceful Degradation kontra Progressive Enhancement (Jacek ...4Developers 2018: Graceful Degradation kontra Progressive Enhancement (Jacek ...
4Developers 2018: Graceful Degradation kontra Progressive Enhancement (Jacek ...PROIDEA
 
Drupal Features - Agnieszka Piłasiewicz
Drupal Features - Agnieszka PiłasiewiczDrupal Features - Agnieszka Piłasiewicz
Drupal Features - Agnieszka PiłasiewiczGrzegorz Bartman
 
"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbać
"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbać"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbać
"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbaćBartosz Ratajczyk
 
Angular 4 pragmatycznie
Angular 4 pragmatycznieAngular 4 pragmatycznie
Angular 4 pragmatycznieSages
 
Testy funkcjonalne
Testy funkcjonalneTesty funkcjonalne
Testy funkcjonalnePROSKAR
 

What's hot (16)

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
 
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]
 
Podstawy SEO w Drupalu 7 - Jarosław Sobiecki
Podstawy SEO w Drupalu 7 - Jarosław SobieckiPodstawy SEO w Drupalu 7 - Jarosław Sobiecki
Podstawy SEO w Drupalu 7 - Jarosław Sobiecki
 
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]
 
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]
 
Migrate API w Drupalu [PL]
Migrate API w Drupalu [PL]Migrate API w Drupalu [PL]
Migrate API 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]
 
Uwierzytelnianie dwuetapowe (2FA) w Drupalu [PL]
Uwierzytelnianie dwuetapowe (2FA) w Drupalu [PL]Uwierzytelnianie dwuetapowe (2FA) w Drupalu [PL]
Uwierzytelnianie dwuetapowe (2FA) w Drupalu [PL]
 
JavaScript, Moduły
JavaScript, ModułyJavaScript, Moduły
JavaScript, Moduły
 
Grok Artykul
Grok ArtykulGrok Artykul
Grok Artykul
 
WordUp Gdynia - Jak tworzyć motywy przyjazne użytkownikom i programistom
WordUp Gdynia - Jak tworzyć motywy przyjazne użytkownikom i programistomWordUp Gdynia - Jak tworzyć motywy przyjazne użytkownikom i programistom
WordUp Gdynia - Jak tworzyć motywy przyjazne użytkownikom i programistom
 
4Developers 2018: Graceful Degradation kontra Progressive Enhancement (Jacek ...
4Developers 2018: Graceful Degradation kontra Progressive Enhancement (Jacek ...4Developers 2018: Graceful Degradation kontra Progressive Enhancement (Jacek ...
4Developers 2018: Graceful Degradation kontra Progressive Enhancement (Jacek ...
 
Drupal Features - Agnieszka Piłasiewicz
Drupal Features - Agnieszka PiłasiewiczDrupal Features - Agnieszka Piłasiewicz
Drupal Features - Agnieszka Piłasiewicz
 
"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbać
"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbać"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbać
"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbać
 
Angular 4 pragmatycznie
Angular 4 pragmatycznieAngular 4 pragmatycznie
Angular 4 pragmatycznie
 
Testy funkcjonalne
Testy funkcjonalneTesty funkcjonalne
Testy funkcjonalne
 

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

Silverlight i PHP - jak budować interfejs nowoczesnych aplikacji internetowych?
Silverlight i PHP - jak budować interfejs nowoczesnych aplikacji internetowych?Silverlight i PHP - jak budować interfejs nowoczesnych aplikacji internetowych?
Silverlight i PHP - jak budować interfejs nowoczesnych aplikacji internetowych?PHPCon Poland
 
Optimizing Drupal Performance (Polish)
Optimizing Drupal Performance (Polish)Optimizing Drupal Performance (Polish)
Optimizing Drupal Performance (Polish)Timur Kamanin
 
Dlaczego Drupal CMS? - www.siplex.pl
Dlaczego Drupal CMS? - www.siplex.plDlaczego Drupal CMS? - www.siplex.pl
Dlaczego Drupal CMS? - www.siplex.plKamil Niewczas
 
Drupal Feeds - Wiktor Burbo
Drupal Feeds - Wiktor BurboDrupal Feeds - Wiktor Burbo
Drupal Feeds - Wiktor BurboGrzegorz Bartman
 
Wordpress dla początkujących szkolenie / warsztat 07/10 Sidebary, Widgety, Mo...
Wordpress dla początkujących szkolenie / warsztat 07/10 Sidebary, Widgety, Mo...Wordpress dla początkujących szkolenie / warsztat 07/10 Sidebary, Widgety, Mo...
Wordpress dla początkujących szkolenie / warsztat 07/10 Sidebary, Widgety, Mo...Mariusz Szatkowski
 
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
 
GET.NET - Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...
GET.NET -  Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...GET.NET -  Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...
GET.NET - Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...Michal Furmankiewicz
 
Migracja z Drupal 6 PressFlow do WordPress 4
Migracja z Drupal 6 PressFlow do WordPress 4Migracja z Drupal 6 PressFlow do WordPress 4
Migracja z Drupal 6 PressFlow do WordPress 4Dawid Rzepczynski
 
Google App Engine i Google Play Services w Twoich aplikacjach
Google App Engine i Google Play Services w Twoich aplikacjachGoogle App Engine i Google Play Services w Twoich aplikacjach
Google App Engine i Google Play Services w Twoich aplikacjach3camp
 
PHP i Microsoft - kto się lubi, ten się czubi
PHP i Microsoft - kto się lubi, ten się czubiPHP i Microsoft - kto się lubi, ten się czubi
PHP i Microsoft - kto się lubi, ten się czubiPHPCon Poland
 
Migracja I Integracja Bazy
Migracja I Integracja BazyMigracja I Integracja Bazy
Migracja I Integracja BazyPrzemysław ...
 
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
 

Similar to Struktura i własności systemu zarządzania treścią Drupal (20)

Silverlight i PHP
Silverlight i PHPSilverlight i PHP
Silverlight i PHP
 
Silverlight i PHP - jak budować interfejs nowoczesnych aplikacji internetowych?
Silverlight i PHP - jak budować interfejs nowoczesnych aplikacji internetowych?Silverlight i PHP - jak budować interfejs nowoczesnych aplikacji internetowych?
Silverlight i PHP - jak budować interfejs nowoczesnych aplikacji internetowych?
 
Optimizing Drupal Performance (Polish)
Optimizing Drupal Performance (Polish)Optimizing Drupal Performance (Polish)
Optimizing Drupal Performance (Polish)
 
Dlaczego Drupal CMS? - www.siplex.pl
Dlaczego Drupal CMS? - www.siplex.plDlaczego Drupal CMS? - www.siplex.pl
Dlaczego Drupal CMS? - www.siplex.pl
 
Drupal Feeds - Wiktor Burbo
Drupal Feeds - Wiktor BurboDrupal Feeds - Wiktor Burbo
Drupal Feeds - Wiktor Burbo
 
Wordpress dla początkujących szkolenie / warsztat 07/10 Sidebary, Widgety, Mo...
Wordpress dla początkujących szkolenie / warsztat 07/10 Sidebary, Widgety, Mo...Wordpress dla początkujących szkolenie / warsztat 07/10 Sidebary, Widgety, Mo...
Wordpress dla początkujących szkolenie / warsztat 07/10 Sidebary, Widgety, Mo...
 
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]
 
GET.NET - Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...
GET.NET -  Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...GET.NET -  Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...
GET.NET - Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...
 
Migracja z Drupal 6 PressFlow do WordPress 4
Migracja z Drupal 6 PressFlow do WordPress 4Migracja z Drupal 6 PressFlow do WordPress 4
Migracja z Drupal 6 PressFlow do WordPress 4
 
Systemy dedykowane (pdf)
Systemy dedykowane (pdf)Systemy dedykowane (pdf)
Systemy dedykowane (pdf)
 
Wydajny frontend 2023
Wydajny frontend 2023Wydajny frontend 2023
Wydajny frontend 2023
 
Data Tier Applications
Data Tier ApplicationsData Tier Applications
Data Tier Applications
 
Google App Engine i Google Play Services w Twoich aplikacjach
Google App Engine i Google Play Services w Twoich aplikacjachGoogle App Engine i Google Play Services w Twoich aplikacjach
Google App Engine i Google Play Services w Twoich aplikacjach
 
Php i Microsoft
Php i MicrosoftPhp i Microsoft
Php i Microsoft
 
PHP i Microsoft - kto się lubi, ten się czubi
PHP i Microsoft - kto się lubi, ten się czubiPHP i Microsoft - kto się lubi, ten się czubi
PHP i Microsoft - kto się lubi, ten się czubi
 
PHP i microsoft
PHP i microsoftPHP i microsoft
PHP i microsoft
 
Migracja I Integracja Bazy
Migracja I Integracja BazyMigracja I Integracja Bazy
Migracja I Integracja Bazy
 
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...
 
Html5 i css3
Html5 i css3Html5 i css3
Html5 i css3
 

More from 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 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
 

More from Grzegorz Bartman (9)

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 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
 

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

  • 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
  • 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
  • 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
  • 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)
  • 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
  • 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
  • 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
  • 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
  • 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
  • 64. Dziękuję za uwagę Grzegorz Bartman https://twitter.com/grzegorzbartman Grzegorz.Bartman@droptica.com www.droptica.com