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

Post on 25-Jan-2015

1.657 views 2 download

description

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

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

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/grzegorzbartmangrzegorz.bartman@droptica.com

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

Grzegorz.Bartman@droptica.com

www.droptica.com