Traumziel MV: Relaunch eines Tourismusportals mit Typo3 Extbase und Fluid
1. Qbus Werbeagentur GmbH
Heiligengeisthof 5 • 18055 Rostock • Tel. (0381) 4 61 39 0 • info@qbus.de • 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 | awu@qbus.de
2. Qbus Portfolio
- Logo
- Corporate Design
- Corporate Identity
- Corporate Language
- Websites
- Webanwendungen
- Redaktionssysteme
- Content
- Google Werbung
- Suchmaschinenoptimierung
- Zugriffsanalyse
- Social Media Beratung
3. 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
4. Projekt-Steckbrief
Realisierung auf Basis Macromedia / Adobe Flash und MySQL
gewachsene Struktur – viele „Hacks“
uneinheitliche Daten- und Codebasis
fest im Code implementierte Sonderwünsche
5.
6.
7. 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
8. 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.
9. 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
10. Prinzip eines CMS
Trennung von Inhalt (Content) und Darstellung (Template)
Besonderheit TYPO3: TypoScript
11. 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
12. 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
14. TYPO3 Flow – MVC-Architektur
Domain-Driven Design
Model
View
Controller
15. 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
18. 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);
...
}
19. DQL – Data/Doctrine Query Language
/**
* finds animalWatching tours for a region
*
* @param QbusTraumzielmvDomainModelRegion $region
*/
public function findByRegion($region)
{
$q = $this->createQuery();
$q->matching(
$q->logicalAnd(
$q->equals('region', $region),
$q->equals('activityType',
'animalWatching'),
$q->equals('isActive', true),
));
…
20. Dependency Injection
class HikingController extends ... {
/**
* hikingRepository
*
* @var QbusTraumzielmvDomainRepositoryHikingRepository
* @inject
*/
protected $hikingRepository;
public function listByRegionAction(Region $region) {
$hikings = $this->hikingRepository->findByRegion($region);
...
}
21. 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 TYPO3CMSExtbaseDomainObjectAbstractEntity {
...
/**
* Datetime until the pin is valid
*
* @var DateTime
* @validate NotEmpty
* @validate(type="DateTime", options={"locale"="de_DE"})
*/
protected $validTo;
...
22. 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
23. 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
30. 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 Templates
ergeben 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