SlideShare ist ein Scribd-Unternehmen logo
1 von 30
Downloaden Sie, um offline zu lesen
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
Qbus Portfolio
- Logo
- Corporate Design
- Corporate Identity
- Corporate Language
- Websites
- Webanwendungen
- Redaktionssysteme
- Content
- Google Werbung
- Suchmaschinenoptimierung
- Zugriffsanalyse
- Social Media Beratung
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
Projekt-Steckbrief
Realisierung auf Basis Macromedia / Adobe Flash und MySQL
gewachsene Struktur – viele „Hacks“
uneinheitliche Daten- und Codebasis
fest im Code implementierte Sonderwünsche
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
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.
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
Prinzip eines CMS
Trennung von Inhalt (Content) und Darstellung (Template)
Besonderheit TYPO3: TypoScript
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
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
Führende PHP Frameworks
TYPO3 Flow – MVC-Architektur
Domain-Driven Design
Model
View
Controller
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
Domain Driven Design
Hiking
Activity
WaterTravel AnimalWatching
Region
Host
City
Domain Driven Design
Activity
- activityType
- activityName
- activityHosts
- region
...
ActivityRepository
- add()
- update()
- findByHost()
- findByRegion()
...
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);
...
}
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),
));
…
Dependency Injection
class HikingController extends ... {
/**
* hikingRepository
*
* @var QbusTraumzielmvDomainRepositoryHikingRepository
* @inject
*/
protected $hikingRepository;
public function listByRegionAction(Region $region) {
$hikings = $this->hikingRepository->findByRegion($region);
...
}
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;
...
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
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
Template
Layout
Partial
Partial
{namespace tzmv=QbusTraumzielmvViewHelpers}
...
<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>
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';
}
}
Das Typo3 Universum
EXTBASE 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 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

Weitere ähnliche Inhalte

Andere mochten auch

Happy QUIZ
Happy QUIZHappy QUIZ
Happy QUIZnavenaa
 
Folgestudie Social Media 2012
Folgestudie Social Media 2012Folgestudie Social Media 2012
Folgestudie Social Media 2012Barbara Kunert
 
Final Presentation Interieur 2012
Final Presentation Interieur 2012Final Presentation Interieur 2012
Final Presentation Interieur 2012wbossier
 
#BSVDUS Access to Capital Part I - David Jetel
#BSVDUS  Access to Capital Part I - David Jetel #BSVDUS  Access to Capital Part I - David Jetel
#BSVDUS Access to Capital Part I - David Jetel StartupDorf e.V.
 
Gute Freunde - Good Friends
Gute Freunde - Good FriendsGute Freunde - Good Friends
Gute Freunde - Good FriendsFreekidstories
 
Wie Unternehmen mit Social Media umgehen
Wie Unternehmen mit Social Media umgehenWie Unternehmen mit Social Media umgehen
Wie Unternehmen mit Social Media umgehenBarbara Kunert
 
Delegieren, ohne die Kontrolle zu verlieren
Delegieren, ohne die Kontrolle zu verlierenDelegieren, ohne die Kontrolle zu verlieren
Delegieren, ohne die Kontrolle zu verlierenpragmatic solutions gmbh
 
Scala 4 Enterprise
Scala 4 EnterpriseScala 4 Enterprise
Scala 4 Enterpriseadesso AG
 
Sicherheit von Webanwendungen
Sicherheit von WebanwendungenSicherheit von Webanwendungen
Sicherheit von Webanwendungenthomasgemperle
 

Andere mochten auch (14)

Obo tab 2-2013
Obo tab 2-2013Obo tab 2-2013
Obo tab 2-2013
 
Happy QUIZ
Happy QUIZHappy QUIZ
Happy QUIZ
 
Folgestudie Social Media 2012
Folgestudie Social Media 2012Folgestudie Social Media 2012
Folgestudie Social Media 2012
 
Final Presentation Interieur 2012
Final Presentation Interieur 2012Final Presentation Interieur 2012
Final Presentation Interieur 2012
 
#BSVDUS Access to Capital Part I - David Jetel
#BSVDUS  Access to Capital Part I - David Jetel #BSVDUS  Access to Capital Part I - David Jetel
#BSVDUS Access to Capital Part I - David Jetel
 
Gute Freunde - Good Friends
Gute Freunde - Good FriendsGute Freunde - Good Friends
Gute Freunde - Good Friends
 
Miskonsepsi
MiskonsepsiMiskonsepsi
Miskonsepsi
 
Wie Unternehmen mit Social Media umgehen
Wie Unternehmen mit Social Media umgehenWie Unternehmen mit Social Media umgehen
Wie Unternehmen mit Social Media umgehen
 
Winter1
Winter1Winter1
Winter1
 
Delegieren, ohne die Kontrolle zu verlieren
Delegieren, ohne die Kontrolle zu verlierenDelegieren, ohne die Kontrolle zu verlieren
Delegieren, ohne die Kontrolle zu verlieren
 
Scala 4 Enterprise
Scala 4 EnterpriseScala 4 Enterprise
Scala 4 Enterprise
 
Gehirn
GehirnGehirn
Gehirn
 
Sicherheit von Webanwendungen
Sicherheit von WebanwendungenSicherheit von Webanwendungen
Sicherheit von Webanwendungen
 
IBM Connectday_ULC-Vortrag_Formularmanagement
IBM Connectday_ULC-Vortrag_FormularmanagementIBM Connectday_ULC-Vortrag_Formularmanagement
IBM Connectday_ULC-Vortrag_Formularmanagement
 

Ähnlich wie Traumziel MV: Relaunch eines Tourismusportals mit Typo3 Extbase und Fluid

TYPO3 Neos - Next Generation CMS (IPC 2014)
TYPO3 Neos - Next Generation CMS (IPC 2014)TYPO3 Neos - Next Generation CMS (IPC 2014)
TYPO3 Neos - Next Generation CMS (IPC 2014)die.agilen GmbH
 
Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?
Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?
Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?adesso AG
 
Apache Solr und TYPO3 @ Frankfurt PHP usergroup 2011-01
Apache Solr und TYPO3 @  Frankfurt PHP usergroup 2011-01Apache Solr und TYPO3 @  Frankfurt PHP usergroup 2011-01
Apache Solr und TYPO3 @ Frankfurt PHP usergroup 2011-01Ingo Renner
 
scopeKM: Chancen und Risiken erkennen mit der textanalytischen Lösung Luxid®
scopeKM: Chancen und Risiken erkennen mit der textanalytischen Lösung Luxid® scopeKM: Chancen und Risiken erkennen mit der textanalytischen Lösung Luxid®
scopeKM: Chancen und Risiken erkennen mit der textanalytischen Lösung Luxid® scopeKM GmbH Knowledge Management
 
elemente websolutions - Zusammenfassung T3DD09
elemente websolutions - Zusammenfassung T3DD09elemente websolutions - Zusammenfassung T3DD09
elemente websolutions - Zusammenfassung T3DD09elemente websolutions
 
Top 10 Internet Trends 2006
Top 10 Internet Trends 2006Top 10 Internet Trends 2006
Top 10 Internet Trends 2006Jürg Stuker
 
Vorstellung TYPO3 Neos - Release 1.0 - Releaseparty Rosenheim
Vorstellung TYPO3 Neos - Release 1.0 - Releaseparty RosenheimVorstellung TYPO3 Neos - Release 1.0 - Releaseparty Rosenheim
Vorstellung TYPO3 Neos - Release 1.0 - Releaseparty RosenheimAlex Kellner
 
Erp in der zukunft: über die funktionen hinaus
Erp in der zukunft: über die funktionen hinausErp in der zukunft: über die funktionen hinaus
Erp in der zukunft: über die funktionen hinausDedagroup
 
Tobias Nebel- Eclipse Sparkplug - Zündfunken für MQTT in der Industrie?
Tobias Nebel- Eclipse Sparkplug - Zündfunken für MQTT in der Industrie?Tobias Nebel- Eclipse Sparkplug - Zündfunken für MQTT in der Industrie?
Tobias Nebel- Eclipse Sparkplug - Zündfunken für MQTT in der Industrie?CarolinaMatthies1
 
Wird das Datacenter künstlich-intelligent?
Wird das Datacenter künstlich-intelligent?Wird das Datacenter künstlich-intelligent?
Wird das Datacenter künstlich-intelligent?Jesus Villar-Rodriguez
 
Software as a Service E-Commerce Technologien
Software as a Service E-Commerce TechnologienSoftware as a Service E-Commerce Technologien
Software as a Service E-Commerce TechnologienMartina Goehring
 
Domain-driven design - eine Einführung
Domain-driven design - eine EinführungDomain-driven design - eine Einführung
Domain-driven design - eine Einführungdie.agilen GmbH
 
IBM Maximo EAM Darstellung
IBM Maximo EAM DarstellungIBM Maximo EAM Darstellung
IBM Maximo EAM DarstellungRODIAS GmbH
 
ForgeRock Webinar - Was ist Identity Relationship Management?
ForgeRock Webinar - Was ist Identity Relationship Management?ForgeRock Webinar - Was ist Identity Relationship Management?
ForgeRock Webinar - Was ist Identity Relationship Management?Hanns Nolan
 
amsl - Ergebnispräsentation der EFRE-Förderphase
amsl - Ergebnispräsentation der EFRE-Förderphaseamsl - Ergebnispräsentation der EFRE-Förderphase
amsl - Ergebnispräsentation der EFRE-FörderphaseBjörn Muschall
 
Apache Kafka
Apache KafkaApache Kafka
Apache Kafkagedoplan
 
Digitale Kuratierungstechnologien – Beispiele aus ausgewählten Branchen
Digitale Kuratierungstechnologien – Beispiele aus ausgewählten BranchenDigitale Kuratierungstechnologien – Beispiele aus ausgewählten Branchen
Digitale Kuratierungstechnologien – Beispiele aus ausgewählten BranchenGeorg Rehm
 
AdminCamp2017 - ApplicationInsights
AdminCamp2017 - ApplicationInsightsAdminCamp2017 - ApplicationInsights
AdminCamp2017 - ApplicationInsightsChristoph Adler
 
XML Director - the technical foundation of onkopedia.com
XML Director - the technical foundation of onkopedia.comXML Director - the technical foundation of onkopedia.com
XML Director - the technical foundation of onkopedia.comAndreas Jung
 

Ähnlich wie Traumziel MV: Relaunch eines Tourismusportals mit Typo3 Extbase und Fluid (20)

TYPO3 Neos - Next Generation CMS (IPC 2014)
TYPO3 Neos - Next Generation CMS (IPC 2014)TYPO3 Neos - Next Generation CMS (IPC 2014)
TYPO3 Neos - Next Generation CMS (IPC 2014)
 
Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?
Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?
Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?
 
Apache Solr und TYPO3 @ Frankfurt PHP usergroup 2011-01
Apache Solr und TYPO3 @  Frankfurt PHP usergroup 2011-01Apache Solr und TYPO3 @  Frankfurt PHP usergroup 2011-01
Apache Solr und TYPO3 @ Frankfurt PHP usergroup 2011-01
 
scopeKM: Chancen und Risiken erkennen mit der textanalytischen Lösung Luxid®
scopeKM: Chancen und Risiken erkennen mit der textanalytischen Lösung Luxid® scopeKM: Chancen und Risiken erkennen mit der textanalytischen Lösung Luxid®
scopeKM: Chancen und Risiken erkennen mit der textanalytischen Lösung Luxid®
 
elemente websolutions - Zusammenfassung T3DD09
elemente websolutions - Zusammenfassung T3DD09elemente websolutions - Zusammenfassung T3DD09
elemente websolutions - Zusammenfassung T3DD09
 
Top 10 Internet Trends 2006
Top 10 Internet Trends 2006Top 10 Internet Trends 2006
Top 10 Internet Trends 2006
 
Vorstellung TYPO3 Neos - Release 1.0 - Releaseparty Rosenheim
Vorstellung TYPO3 Neos - Release 1.0 - Releaseparty RosenheimVorstellung TYPO3 Neos - Release 1.0 - Releaseparty Rosenheim
Vorstellung TYPO3 Neos - Release 1.0 - Releaseparty Rosenheim
 
Erp in der zukunft: über die funktionen hinaus
Erp in der zukunft: über die funktionen hinausErp in der zukunft: über die funktionen hinaus
Erp in der zukunft: über die funktionen hinaus
 
Tobias Nebel- Eclipse Sparkplug - Zündfunken für MQTT in der Industrie?
Tobias Nebel- Eclipse Sparkplug - Zündfunken für MQTT in der Industrie?Tobias Nebel- Eclipse Sparkplug - Zündfunken für MQTT in der Industrie?
Tobias Nebel- Eclipse Sparkplug - Zündfunken für MQTT in der Industrie?
 
Wird das Datacenter künstlich-intelligent?
Wird das Datacenter künstlich-intelligent?Wird das Datacenter künstlich-intelligent?
Wird das Datacenter künstlich-intelligent?
 
Software as a Service E-Commerce Technologien
Software as a Service E-Commerce TechnologienSoftware as a Service E-Commerce Technologien
Software as a Service E-Commerce Technologien
 
Domain-driven design - eine Einführung
Domain-driven design - eine EinführungDomain-driven design - eine Einführung
Domain-driven design - eine Einführung
 
IBM Maximo EAM Darstellung
IBM Maximo EAM DarstellungIBM Maximo EAM Darstellung
IBM Maximo EAM Darstellung
 
ForgeRock Webinar - Was ist Identity Relationship Management?
ForgeRock Webinar - Was ist Identity Relationship Management?ForgeRock Webinar - Was ist Identity Relationship Management?
ForgeRock Webinar - Was ist Identity Relationship Management?
 
Apache Solr Revisited 2015
Apache Solr Revisited 2015Apache Solr Revisited 2015
Apache Solr Revisited 2015
 
amsl - Ergebnispräsentation der EFRE-Förderphase
amsl - Ergebnispräsentation der EFRE-Förderphaseamsl - Ergebnispräsentation der EFRE-Förderphase
amsl - Ergebnispräsentation der EFRE-Förderphase
 
Apache Kafka
Apache KafkaApache Kafka
Apache Kafka
 
Digitale Kuratierungstechnologien – Beispiele aus ausgewählten Branchen
Digitale Kuratierungstechnologien – Beispiele aus ausgewählten BranchenDigitale Kuratierungstechnologien – Beispiele aus ausgewählten Branchen
Digitale Kuratierungstechnologien – Beispiele aus ausgewählten Branchen
 
AdminCamp2017 - ApplicationInsights
AdminCamp2017 - ApplicationInsightsAdminCamp2017 - ApplicationInsights
AdminCamp2017 - ApplicationInsights
 
XML Director - the technical foundation of onkopedia.com
XML Director - the technical foundation of onkopedia.comXML Director - the technical foundation of onkopedia.com
XML Director - the technical foundation of onkopedia.com
 

Mehr von Qbus Werbeagentur

Einfache Einführung in das Onlinemarketing über Suchbegriffe
Einfache Einführung in das Onlinemarketing über SuchbegriffeEinfache Einführung in das Onlinemarketing über Suchbegriffe
Einfache Einführung in das Onlinemarketing über SuchbegriffeQbus Werbeagentur
 
50 Punkte Checkliste für Ihre Website
50 Punkte Checkliste für Ihre Website50 Punkte Checkliste für Ihre Website
50 Punkte Checkliste für Ihre WebsiteQbus Werbeagentur
 
E-Communication ist mehr als Bannerwerbung und ein Online-Shop
E-Communication ist mehr als Bannerwerbung und ein Online-ShopE-Communication ist mehr als Bannerwerbung und ein Online-Shop
E-Communication ist mehr als Bannerwerbung und ein Online-ShopQbus Werbeagentur
 
Social Media für kleine Unternehmen – Hype oder Marketingmotor?
Social Media für kleine Unternehmen – Hype oder Marketingmotor?Social Media für kleine Unternehmen – Hype oder Marketingmotor?
Social Media für kleine Unternehmen – Hype oder Marketingmotor?Qbus Werbeagentur
 
Social Media-Marketing für Ostseebäder
Social Media-Marketing für OstseebäderSocial Media-Marketing für Ostseebäder
Social Media-Marketing für OstseebäderQbus Werbeagentur
 

Mehr von Qbus Werbeagentur (6)

Einfache Einführung in das Onlinemarketing über Suchbegriffe
Einfache Einführung in das Onlinemarketing über SuchbegriffeEinfache Einführung in das Onlinemarketing über Suchbegriffe
Einfache Einführung in das Onlinemarketing über Suchbegriffe
 
Unternehmenssprache
UnternehmensspracheUnternehmenssprache
Unternehmenssprache
 
50 Punkte Checkliste für Ihre Website
50 Punkte Checkliste für Ihre Website50 Punkte Checkliste für Ihre Website
50 Punkte Checkliste für Ihre Website
 
E-Communication ist mehr als Bannerwerbung und ein Online-Shop
E-Communication ist mehr als Bannerwerbung und ein Online-ShopE-Communication ist mehr als Bannerwerbung und ein Online-Shop
E-Communication ist mehr als Bannerwerbung und ein Online-Shop
 
Social Media für kleine Unternehmen – Hype oder Marketingmotor?
Social Media für kleine Unternehmen – Hype oder Marketingmotor?Social Media für kleine Unternehmen – Hype oder Marketingmotor?
Social Media für kleine Unternehmen – Hype oder Marketingmotor?
 
Social Media-Marketing für Ostseebäder
Social Media-Marketing für OstseebäderSocial Media-Marketing für Ostseebäder
Social Media-Marketing für Ostseebäder
 

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
  • 16. Domain Driven Design Hiking Activity WaterTravel AnimalWatching Region Host City
  • 17. Domain Driven Design Activity - activityType - activityName - activityHosts - region ... ActivityRepository - add() - update() - findByHost() - findByRegion() ...
  • 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
  • 25. {namespace tzmv=QbusTraumzielmvViewHelpers} ... <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>
  • 26. 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'; } }
  • 28.
  • 29.
  • 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