Softwareentwicklung mit Drupal

Referent: Manuel Pistner
Was
ist Software-Konfiguration
●

●

●

Basis-System (Core aktuell Version 7.25)
Abstrakte Komponenten (Module /
Plugins)
konfigurierbare Schnittstellen

2/54
Was
ist Software-Konfiguration
=> Abstrakte Module werden zu
konkreten Use-Cases konfiguriert
- Bildergalerie
- Addressdatenbank
- Terminverwaltung
- Aufgabenverwaltung
- ...
3/54
Was
ist Software-Konfiguration
Use-Case

Konfigurationsebene

Modul A

Plugin 1

Modul B

Modul C

Plugin 2

4/54
Warum
Softwarekonfiguration
●

●

●

Wiederverwendbare Komponenten
(spart Zeit)
Keine Programmierung (reduziert
Fehler)
Dennoch API für individuelle Module
5/54
Was
ist zu beachten
●

●

●

Konfiguration wird Programmierung
vorgezogen
Best-Practises sind in Konfiguration zu
finden
Wenn eigener Code dann
wiederverwendbar = Konfigurierbar
6/54
Was
ist Drupal
●

Ursprung als Community-Framework

●

Später Web-CMS

●

Heute Application-Framework

7/54
Was
ist Drupal außerdem
●

●

●

größtes internationales Community
getriebenes Open-Source Projekt
Über 1% aller Webseiten (
https://drupal.org/project/usage/drupal)
„Come for the Code stay for the
community“
8/54
Wie
verbreitet ist Drupal

9/54
Was
unterscheidet Drupal
+ Application-Framework
+ Höchste Flexibilität
+Integration mit anderen Systemen
(Apps, Webservices, Clients, Server)

10/54
Was
unterscheidet Drupal
- Komplex
- Steile Lernkurve
- Benutzer-Interface teils schwer
überschaubar

11/54
Welche
Anwendungsfälle gibt es
●

Content- und Media-Portale

●

Online-Communities

●

Web-Anwendungen (CRM, BusinessApps)

12/54
Welche
Anwendungsfälle gibt es
●

●

●

E-Commerce Portale
Service-Backend für Apps und andere
Clients
Blogs und Online-Magazine

13/54
Wer
setzt Drupal ein
●

White House

●

MTV

●

AT&T

●

Land Hessen (Hessen.de)
14/54
Wer
setzt Drupal ein
●

Deutschland.de

●

McDonalds

●

Grammy Awards
=> Weitere @ http://websites.usandv.com/
15/54
Wie
entwickelt sich Drupal
●

Aktuelle Version 7.25

●

Dieses Jahr Drupal 8

●

Dann Objekt-orientiert / Service-orientiert
(REST)

16/54
Wie
entwickelt man mit Drupal
●

Vorraussetzung: Drupal-Core

●

Erweiterungen (Module, Plugins)

●

Themes

17/54
Wie
entwickelt man mit Drupal
●

●

Drupal API für eigene Module
(api.drupal.org)
Best Practises (Videos @ nodeone.se)

18/54
Welche
Bereiche existieren in Software
●

Datenstruktur (Model)

●

Daten-Auswahl (Queries)

●

Daten-Darstellung (HTML Output)

19/54
Welche
Bereiche existieren in Software
●

Layout (HTML Markup)

●

Businesslogik / Workflows (Controller)

●

Zugriffskontrolle (Rechte, Rollen)

20/54
Welche
Bereiche existieren in Software
●

Performance (Slow-Queries, Caching)

●

Entwickler-Tools (Debugging)

21/54
Welche
Bereiche existieren in Software
●

Auswahl und Darstellung von Daten
Queries

DB
MySQL

Darstellung

Datenstruktur

Layout

Theme
(CSS, HTML)

Recht und
Rollen beachten

22/54
Welche
Bereiche existieren in Software
●

Business Logik
User
Service

Recht und
Rollen beachten

Input

Events
Conditions

DB
MySQL

Output

Datenstruktur

23/54
Welche
Module gibt es für die Bereiche
=> Datenstruktur:
●

Entities (Nodes), Bundles (Kontakt, Firma)

●

Fields (Integer, Text, Reference, Image)

24/54
Welche
Module gibt es für die Bereiche
●

=> Aufbau von Entities und Bundles
Field C
Bundle A
DB

Entity Type

Bundle B
Bundle C

Field D
Field A
Field B

25/54
Welche
Module gibt es für die Bereiche

Content (Node) ist ein Entity mit existierenden Bundles „Article“ und
„Basic Page“ mit jeweiligen Feldern
26/54
Welche
Module gibt es für die Bereiche

Verwalten von Feldern eines Nodetypes (Node / Entities)
27/54
Welche
Module gibt es für die Bereiche

Generiertes Formular zum Erstellen eines neuen Nodes (Entity)
28/54
Welche
Module gibt es für die Bereiche
=> Datenselektion (Query):
●

Views

●

API (Entity Field Query, DB-Abstraktion)

29/54
Welche
Module gibt es für die Bereiche

Views zum Erstellen und Anzeigen von Daten aus der Datenbank (Entities)
30/54
Welche
Module gibt es für die Bereiche
=> Rendering / Markup / Daten-Output:
●

Field-Formatter (Fields, Image, Gallery)

●

View Modes (Entities, Display Suite)

●

Weitere Formatter (Views Display, Row
Styles)
31/54
Welche
Module gibt es für die Bereiche
=> Layout:
●

Panels, Panels everywhere, Panelizer

●

Blocksystem / Contexts

●

Display Suite
32/54
Welche
Module gibt es für die Bereiche

Einstellungen für die Anzeige eines Nodetypes (Display Suite)
33/54
Welche
Module gibt es für die Bereiche

Anzeige eines Nodes (Display Suite)
34/54
Welche
Module gibt es für die Bereiche

Konfiguration eines Panels für eine Node-Ansicht
35/54
Welche
Module gibt es für die Bereiche

Konfiguration eines Panels per „In-Place Editing“ und Drag&Drop
36/54
Welche
Module gibt es für die Bereiche

Anzeige eines Panles mit View und eingebundenem Node
37/54
Welche
Module gibt es für die Bereiche
=> Business Logik / Workflow
●

Rules

●

Rules-Erweiterungen (Rules Conditional)

38/54
Welche
Module gibt es für die Bereiche

Konfiguration einer Rule nach dem Speichern eines vorhandenen Nodes
39/54
Welche
Module gibt es für die Bereiche
=> Berechtigungskontrolle
●

Content Access

●

AUL (User Access List, ähnlich AUL)

●

Weitere Permission Module
40/54
Welche
Module gibt es für die Bereiche
=> Performance
●

Entity Cache (Cachen der Entity Daten)

●

Boost, Memcache, APC (Op-Code Cache)

●

Varnish (Extern)
41/54
Welche
Module gibt es für die Bereiche
=> Deployment
●

●

●

Features (Export von ModuleKonfiguration)
Strongarm (Export von SystemEinstellungen)
Drush Make (Modul-Versionsmanagement)
42/54
Welche
Module gibt es für die Bereiche
=> Entwicklung
●

Devel

●

Drush (Shell-Konsole für Drupal)

43/54
Was
leistet die Drupal API
●

Meist prozedural in Drupal 7

●

Interaktion per Hooks (_info, _alter)

●

Weitere APIs durch Contrib Module

44/54
Was
leistet die Drupal API
●

Field API (Feld-typen definieren)

●

Views API (Plugins Selktion und Ausgabe)

●

Rules API (Events, Actions, Conditions)

45/54
Was
Leistet die Drupal API
●

Ausblick Drupal 8 (Mitte 2014)

●

Basierend auf Symfony

●

Objektorientierte Architektur

46/54
Wie
Wird in Drupal deployed
Zentrales Problem:
●

Content

●

Konfiguration
=> liegen in einer Datenbank
47/54
Wie
wird in Drupal deployed
DB
Entwicklung

…..

DB
Live

Content +
Konfiguration

Content +
Konfiguration

Apache (PHP-Code)

Kopieren der Datenbank
Überschreibt neuen
Content der Live DB !

Apache (PHP-Code)

48/54
Wie
wird in Drupal deployed
Lösung:
●

●

Konfiguration von Content trennen
Features exportiert Konfiguration in Code
(versionierbar, transportierbar)

49/54
Wie
wird in Drupal deployed
DB
Entwicklung

…..

Content +
Konfiguration
Apache (PHP-Code)

DB
Live

Content +
Konfiguration
Apache (PHP-Code)

CodeRepository
(GIT)

Deployment
ohne Kopieren
der DB sondern
nur auf Datei-Ebene

50/54
Wie
Wird in Drupal deployed

51/54
Wie
kann ich schneller starten
●

Mit Distributionen!

●

Viele Module vorkonfiguriert

●

Beinhalten Best-Practises

●

Bilden oft bereits konkrete Features ab
52/54
Wie
Kann ich schneller einsteigen
●

http://api.drupal.org (Schnittstellen, Doku)

●

Nodeone.se (Videos)

●

Lullabot.com (Videos)

53/54
Manuel Pistner
Email: pistner@brightsolutions.de

Softwarekonfiguration mit Drupal