Traumziel MV: Relaunch eines Tourismusportals mit Typo3 Extbase und Fluid

30
Qbus Werbeagentur GmbH Heiligengeisthof 5 18055 Rostock Tel. (0381) 4 61 39 0 [email protected] www.qbus.de Traumziel MV: Relaunch eines Tourismusportals mit Extbase und Fluid Vortrag auf den 9. Wirtschaftsinformatiktagen an der Hochschule Wismar Dipl.-Ing. Axel Wüstemann | Qbus Werbeagentur GmbH | [email protected]

description

Vortrag auf den 9. Wirtschaftsinformatik-Tagen (WIWITA) an der Hochschule Wismar am 12. und 13. Juni 2014

Transcript of Traumziel MV: Relaunch eines Tourismusportals mit Typo3 Extbase und Fluid

Page 1: Traumziel MV:  Relaunch eines Tourismusportals mit Typo3 Extbase und Fluid

Qbus Werbeagentur GmbH

Heiligengeisthof 5 • 18055 Rostock • Tel. (0381) 4 61 39 0 • [email protected] • www.qbus.de

Traumziel MV:

Relaunch eines Tourismusportals mit Extbase und Fluid

Vortrag auf den 9. Wirtschaftsinformatiktagen an der Hochschule

Wismar

Dipl.-Ing. Axel Wüstemann | Qbus Werbeagentur GmbH | [email protected]

Page 2: Traumziel MV:  Relaunch eines Tourismusportals mit Typo3 Extbase und Fluid

Qbus Portfolio

- Logo

- Corporate Design

- Corporate Identity

- Corporate Language

- Websites

- Webanwendungen

- Redaktionssysteme

- Content

- Google Werbung

- Suchmaschinenoptimierung

- Zugriffsanalyse

- Social Media Beratung

Page 3: Traumziel MV:  Relaunch eines Tourismusportals mit Typo3 Extbase und Fluid

Projekt-Steckbrief

� Hotels als Gastgeber

� Basis des Monetarisierungskonzeptes:

Hotels und Pensionen zahlen dafür, dass sie über Traumziel-MV.de

ihren Gâsten einen ganz besonderen Mehrwert anbieten können

Page 4: Traumziel MV:  Relaunch eines Tourismusportals mit Typo3 Extbase und Fluid

Projekt-Steckbrief

� Realisierung auf Basis Macromedia / Adobe Flash und MySQL

� gewachsene Struktur – viele „Hacks“

� uneinheitliche Daten- und Codebasis

� fest im Code implementierte Sonderwünsche

Page 5: Traumziel MV:  Relaunch eines Tourismusportals mit Typo3 Extbase und Fluid
Page 6: Traumziel MV:  Relaunch eines Tourismusportals mit Typo3 Extbase und Fluid
Page 7: Traumziel MV:  Relaunch eines Tourismusportals mit Typo3 Extbase und Fluid

Ziele des Relaunch

� Eliminierung von Flash als veralterte Technologiebasis

� vollstândige mobile Benutzbarkeit

� gute Erfassbarkeit von Suchmaschinen mit der Zielstellung, ein

gutes Ranking für relevante Keywords zu erreichen

� Einführung eines Premiumbereiches

� Kartenmaterial auf Google Maps oder Open Street Map basierend

� zukunftsfâhige Technologiebasis für stabilen Betrieb, Wachstum

und weiteren funktionalen Ausbau � Typo3

Page 8: Traumziel MV:  Relaunch eines Tourismusportals mit Typo3 Extbase und Fluid

TYPO3 CMS

� TYPO3 CMS existiert seit 1998 / ursprünglich entwickelt

vom Dânen Kasper Skårhøj

� Nach mehreren Jahren im "Beta-Test"

kam mit der Version 3.0 am 24. Mai 2002

die erste "richtige" Version auf den Markt.

Page 9: Traumziel MV:  Relaunch eines Tourismusportals mit Typo3 Extbase und Fluid

TYPO3 CMS

� TYPO3 CMS ist ein

„Enterprise Open Source Content Management Framework“

� ca. 500.000 Installationen weltweit, > 5 Mio Downloads

� Einsatz in DE z.B. bei > 50% aller DAX 500 Unternehmen, > 50% aller

Bundesliga-Vereinen, Discounter, Autovermieter, Öffentliche

Trâger,...

� > 6.000 Extensions, > 100.000 Entwickler weltweit, > 1.500

Agenturen weltweit

� Finanziert und unterstützt von der TYPO3 Association

Page 10: Traumziel MV:  Relaunch eines Tourismusportals mit Typo3 Extbase und Fluid

Prinzip eines CMS

Trennung von Inhalt (Content) und Darstellung (Template)

Besonderheit TYPO3: TypoScript

Page 11: Traumziel MV:  Relaunch eines Tourismusportals mit Typo3 Extbase und Fluid

TYPO3 NEOS

� Auf den ersten T3DD (TYPO3 Developer Days) im Jahr 2006 wurde

der Entschluss gefasst, TYPO3 von Grund auf neu zu schreiben

� Das Projekt wurde vom

Kernentwickler

Robert Lemke

begonnen und nach

wenigen Monaten von

Karsten Dambekalns

unterstützt.

� Codename: TYPO3 Phoenix (bzw. TYPO3 5.0)

� Beginn der Entwicklung mit eigenem Framework TYPO3 Flow

Page 12: Traumziel MV:  Relaunch eines Tourismusportals mit Typo3 Extbase und Fluid

TYPO3 Flow

� TYPO3 Flow ist ein PHP Framework

Bits und Bytes

Strukturen, Funktionen, Objekte

Architektur und Lösungen für Standardaufgaben

Prozessor

Programmiersprache

Framework

Anwendung Lösung der Anwendungsaufgabe

Page 13: Traumziel MV:  Relaunch eines Tourismusportals mit Typo3 Extbase und Fluid

Führende PHP Frameworks

Page 14: Traumziel MV:  Relaunch eines Tourismusportals mit Typo3 Extbase und Fluid

TYPO3 Flow – MVC-Architektur

Domain-Driven Design

Model

View

Controller

Page 15: Traumziel MV:  Relaunch eines Tourismusportals mit Typo3 Extbase und Fluid

TYPO3 Extbase

� Rückportierung von TYPO3 Flow auf TYPO3 CMS

� für die Programmierung von TYPO3 CMS-Erweiterungen

(extensions)

� für die Modernisierung der Codestruktur

von TYPO3 CMS

Page 16: Traumziel MV:  Relaunch eines Tourismusportals mit Typo3 Extbase und Fluid

Domain Driven Design

Hiking

Activity

WaterTravel AnimalWatching

RegionHost

City

Page 17: Traumziel MV:  Relaunch eines Tourismusportals mit Typo3 Extbase und Fluid

Domain Driven Design

Activity

- activityType

- activityName

- activityHosts

- region

...

ActivityRepository

- add()

- update()

- findByHost()

- findByRegion()

...

Page 18: Traumziel MV:  Relaunch eines Tourismusportals mit Typo3 Extbase und Fluid

Persistenz

� basiert in Flow auf den Object Relational Manager (ORM) Doctrine

� andere Persistenzlayer als relationale Datenbanken anbindbar

� in Extbase auf der Typo3 Datenbank API

public function addActivityToPinAction(Pin $pin, Activity $activity)

{

...

$pin->addActivity($activity);

$this->pinRepository->update($pin);

...

}

Page 19: Traumziel MV:  Relaunch eines Tourismusportals mit Typo3 Extbase und Fluid

DQL – Data/Doctrine Query Language

/**

* finds animalWatching tours for a region

*

* @param \Qbus\Traumzielmv\Domain\Model\Region $region

*/

public function findByRegion($region)

{

$q = $this->createQuery();

$q->matching(

$q->logicalAnd(

$q->equals('region', $region),

$q->equals('activityType',

'animalWatching'),

$q->equals('isActive', true),

));

Page 20: Traumziel MV:  Relaunch eines Tourismusportals mit Typo3 Extbase und Fluid

Dependency Injection

class HikingController extends ... {

/**

* hikingRepository

*

* @var \Qbus\Traumzielmv\Domain\Repository\HikingRepository

* @inject

*/

protected $hikingRepository;

public function listByRegionAction(Region $region) {

$hikings = $this->hikingRepository->findByRegion($region);

...

}

Page 21: Traumziel MV:  Relaunch eines Tourismusportals mit Typo3 Extbase und Fluid

Annotationen

� weniger Code, lesbarer Code, wartbarer Code

� z.B. für Validierung, Relationen zwischen Objekten (1:n, m:n usw.),

Object-Property - Database-Field Mapping, Objekttyp (singleton,

prototype, session), AOP-Steuerung, eigene Annotationen

class Pin extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity {

...

/**

* Datetime until the pin is valid

*

* @var \DateTime

* @validate NotEmpty

* @validate(type="DateTime", options={"locale"="de_DE"})

*/

protected $validTo;

...

Page 22: Traumziel MV:  Relaunch eines Tourismusportals mit Typo3 Extbase und Fluid

Weitere Merkmale von Flow/Extbase

� AOP – Aspektorientierte Programmierung

� Modularisierung von modulübergreifenden Aspekten,

wie z.B. Logging, Security usw.

� AOP gibt es nur in Flow, nicht in Extbase

� Signal Slot

� Implementierung des Observer Patterns für Event-gesteuerte

Ablâufe

Page 23: Traumziel MV:  Relaunch eines Tourismusportals mit Typo3 Extbase und Fluid

TYPO3 Fluid

� Mechanismus um „intelligente“ Templates zu entwickeln

� klassisch TYPO3: „Markertemplates“

� weit verbreitete Extension bis Typo3 4.x: TemplaVoilá

� Fluid:

� XML-Konform

� durch ViewHelper erweiterbar

Page 24: Traumziel MV:  Relaunch eines Tourismusportals mit Typo3 Extbase und Fluid

Template

Layout

Partial

Partial

Page 25: Traumziel MV:  Relaunch eines Tourismusportals mit Typo3 Extbase und Fluid

{namespace tzmv=Qbus\Traumzielmv\ViewHelpers}

...

<f:security.ifHasRole role="Gastgeber">

<f:then>

<li>

<f:link.page pageUid="157" ...>

<i class="fa fa-power-off"></i> Abmelden

</f:link.page>

</li>

</f:then>

<f:else>

...

</f:else>

</f:security.ifHasRole>

<nav id="navigation">

<f:cObject typoscriptObjectPath="lib.extTzmv.mainMenu"/>

</nav>

<f:render section="headerMenu" />

<f:comment>Seiteninhalt</f:comment>

<div id="main">

<div class="container">

<f:render section="content" />

</div>

</div>

Page 26: Traumziel MV:  Relaunch eines Tourismusportals mit Typo3 Extbase und Fluid

ViewHelper

class BoolViewHelper extends AbstractViewHelper {

/**

* returns Ja/Nein due to the boolean input value

*

* @param boolean $value

* @return void

*/

public function render($value)

{

return ($value) ? 'Ja' : 'Nein';

}

}

Page 27: Traumziel MV:  Relaunch eines Tourismusportals mit Typo3 Extbase und Fluid

Das Typo3 Universum

EXTBASE FLUID

Page 28: Traumziel MV:  Relaunch eines Tourismusportals mit Typo3 Extbase und Fluid
Page 29: Traumziel MV:  Relaunch eines Tourismusportals mit Typo3 Extbase und Fluid
Page 30: Traumziel MV:  Relaunch eines Tourismusportals mit Typo3 Extbase und Fluid

Fazit

� mit Typo3 und Extbase lassen sich komplexe Webanwendungen mit sinnvollem Aufwand umsetzen

� optimal insbesondere in der Mischung von applikativen und CMS-Funktionen

� Daten- und Objektmodellierung sehr einfach und direkt möglich –insbesondere mit Unterstützung des grafischen Kickstarters

� mit Fluid lâsst sich recht elegant arbeiten, bei komplexeren Templatesergeben sich Strukturierungs- und letztendlich Wartungs-Probleme

� größte Herausforderung war die sinnvolle „Responsive“-Umsetzung –weitere Optimierungen notwendig

� Möglich aber noch nicht umgesetzt: testgetriebene Entwicklung