struktura i własności systemu zarządzania treścią drupal

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

Upload: grzegorz-bartman

Post on 25-Jan-2015

1.658 views

Category:

Software


2 download

DESCRIPTION

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

TRANSCRIPT

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

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

Grzegorz Bartman

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

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

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

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

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

Dlaczego Drupal?Struktura systemuProblemy z DrupalemPrzyszłość Drupala

www.droptica.com

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

Dlaczego Drupal?

Page 6: Struktura i własności systemu zarządzania treścią 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

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

Czym jest Drupal?

CMS

Twórz, aktualizuj, organizuj treści w

swoim serwisie internetowym.

Application Framework

Twórz inne aplikacja za pomocą Drupala

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

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

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

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

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

Media Rozrywka Sektor publiczny Wyższa edukacja ICT

Kto używa Drupala

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

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

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

Statystyki wykorzystania Drupala

trends.builtwith.comTop 10k sites

w3techs.com.gov sites

http://w3techs.com/technologies/segmentation/tld-gov-/content_management

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

Jak zbudowany jest Drupal?

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

Rdzeń, moduły, szablony

Rdzeń (core)

Moduły

Szablony

Moduły

Szablony

Drupal.org

Biblioteki

Moduły

Szablony

Własne kody

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

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

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

Elementy interfejsu Drupala

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

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)

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

Fields

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

Views - konfiguracja

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

Views – podgląd zapytania

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

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.

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

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

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

Hooks (haki)

https://api.drupal.org/api/drupal/includes%21module.inc/group/hooks/7

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

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

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

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

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

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

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

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

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

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

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

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ń

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

Ustawienia uprawnień

Rozbudowany system uprawnień pozwala na dowolne zarządzanie dostępem do wybranych części systemu.

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

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', );

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

Integracja

Drupal core

XML RPC

Drupal

LDAPActive Directory

Aplikacja mobilna

Dowolny systemz webservice

Moduł Services

REST, JSON, JSON-RPC, SOAP, AMF

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

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

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

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→

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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/

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

Baza danych

Database abstraction layer

https://api.drupal.org/api/drupal/includes!database!database.inc/group/database/7

MySQL

MariaDB

PostgreSQL

Oracle

MS SQL

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

Ś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

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

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

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

Możliwości Drupala

Podczas tej prezentacji przedstawiłem 5 modułów●Views (w rdzeniu Drupala 8)●Rules●Link●Commerce●Services

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

Możliwości Drupala

drupal.org

+22 000 darmowych modułów

rozwijanych przez +33 000 developerów

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

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

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

Problemy

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

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

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

Diabeł tkwi w szczegółach

Tanie funkcjonalności(moduły)

Drogie szczegółyDopracowanie interfejsu

Błędy w modułach2 moduły kolidują ze sobą

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

Wiedza

Brak rozeznania w modułach

oraz

Brak znajomości API

Często przekłada się na niepowodzenie

projektu

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

Konfiguracja w bazie danych

Drupal do uruchomienia wymaga złożonej bazy danych

(frameworki mogą być uruchamiane bez bazy danych)

Moduł Features

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

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

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

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

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

Przyszłość Drupala

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

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

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

Cykl życia Drupala

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

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

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

Nauka Drupala

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

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

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

Książki

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

Pytania?

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

Dziękuję za uwagę

Grzegorz Bartman

https://twitter.com/grzegorzbartman

[email protected]

www.droptica.com