Drücke die Tasten ◄ ► für weitere Artikel  

TYPO3 Neos: Ein Blick unter die Haube

Die Alpha-Version von TYPO3 Neos steht seit letzter Woche zum Download bereit. Das Release der Neuentwicklung hat der TYPO3-Experte Martin Helmich zum Anlass genommen, einen Blick unter die Haube des Content Managament Systems zu werfen.

TYPO3 Neos: Ein Blick unter die Haube

Als das TYPO3-Entwicklerteam auf der T3CON in Stuttgart das Next-Generation-CMS Neos ankündigte, hatte dieses System bereits einen weiten Weg hinter sich. So wurde es 2008 zunächst als 5.0 angekündigt und trug zwischendurch den Namen Phoenix. Quasi als „Nebenprodukt“ entstand das Applikations-Framework TYPO3 Flow (ehemals FLOW3).

Seit letzter Woche steht die erste Alpha-Version des neuen CMS zum zur Verfügung – Grund genug, dem neuem System einmal unter die Haube zu schauen.

Wichtigste Funktion eines CMS ist, wie der Name bereits besagt, das Verwalten von Inhalten. Neos verfolgt in dieser Hinsicht einen etwas anderen Ansatz als aus TYPO3 bekannt, daher möchte ich in diesem Artikel zunächst einmal einen Blick darauf werfen, wie Neos mit Inhalten umgeht. Im zweiten Abschnitt des Artikels betrachte ich anschließend noch ein paar typische Problemstellungen, die sich beim Arbeiten mit der Alpha-Version ergeben könnten, und wie diese angegangen werden können.

Verwaltung von Inhalten

Über die Inspect-Funktion kann die Inhaltsstruktur einer Seite dargestellt werden.

Ein bedeutender Unterschied im Vergleich zu TYPO3 liegt bei Neos in der Art und Weise, wie Inhalte verarbeitet werden. Zur Erinnerung: Struktur und Inhalte einer Webseite werden in TYPO3 über Seiten und Inhaltselemente abgebildet. Dabei kann jede Seite beliebige Unterseiten haben und Inhaltselemente beinhalten. Eine Verschachtelung von Inhaltselementen ist standardmäßig jedoch nicht vorgesehen, bzw. nur über Umwege wie Grid Elements oder Templavoilà möglich.

In Neos sind Inhalte einer Website anders modelliert: Die aus TYPO3 bekannte strikte Trennung von Seiten und Inhaltselementen wurde aufgehoben. Eine Neos-Seite besteht nun nur noch aus Knoten (engl. nodes), die in nahezu beliebigen Hierarchien angeordnet werden können. Ein solcher Knoten kann beispielsweise eine Seite sein, aber auch ein klassisches Text-Inhaltselement oder ein Strukturelement wie beispielsweise ein zweispaltiger Container. Somit unterstützt Neos von Haus aus ein beliebig tief verschachtelbares Content-Modell.

Um die Knoten-Struktur einer Seite zu betrachten, könnt ihr den Inspect-Button verwenden, der sich in der unteren linken Ecke des Backends befindet.

Definition eigener Knotentypen

Auch die Definition eigener Knoten-Typen ist über das ebenfalls neu eingeführte TypoScript 2 problemlos möglich. Mit folgenden TypoScript kann beispielsweise ein neuer Knotentyp definiert werden. Zum Rendern des Knotens wird ein benutzerdefiniertes Template verwendet.

prototype(MW.NeosDemo.ContentTypes:MyHeading) <
prototype(TYPO3.TypoScript:Template)
prototype(MW.NeosDemo.ContentTypes:MyHeading) {
templatePath = 'resource://MW.NeosDemo/Private/Templates/TypoScriptObjects/MyHeading.html'
title = ${q(node).property('title')}
color = ${q(node).property('color')}
}

Der neue Inhaltstyp kann dem System anschließend per Konfiguration bekannt gemacht werden (üblicherweise in der Settings.yaml eures Pakets):

TYPO3:
TYPO3CR:
contentTypes:
'MW.NeosDemo.ContentTypes:MyHeading'
superTypes: ['TYPO3.Phoenix.ContentTypes:ContentObject']
label: 'Farbige Überschrift'
properties:
title: { default: 'Farbige Überschriften sind toll!' }
color: { label: 'Überschriftsfarbe', type: 'string', default: '#ff0000' }

Auf diese Art und Weise angelegte Inhaltselemente stehen den Redakteuren der Seite im Backend sofort zur Verfügung. Das genaue Vorgehen zum Erstellen eigener Inhaltselemente zu beschreiben, würde an dieser Stelle zu weit führen. Dennoch kann man an obigem Beispiel sehr gut sehen, wie einfach es ist, mit nur ein paar Zeilen TypoScript das System nach komplett eigenen Vorstellungen erweitern oder verändern zu können.

Tipps und Tricks

Falls ihr nach ein wenig Experimentieren den Ausgangszustand der Seite wieder herstellen möchtet, könnt ihr hierzu den eingebauten Flow-Kommandozeilen-Client verwenden. Mit den folgenden beiden Kommandos könnt ihr zunächst die aktuelle Seite komplett löschen, und anschließend aus dem Paket TYPO3.PhoenixDemoTypo3Org wieder die Standard-Inhalte einspielen:

$ ./flow site:prune
$ ./flow site:import --package-key TYPO3.PhoenixDemoTypo3Org

Wollt ihr hingegen Änderungen an eurer Seite sichern, um diese später wiederherstellen zu können, geht dies auch ohne Probleme. Mittels des Kommandozeilen-Clients könnt ihr eine komplette Seite ins XML-Format exportieren und auch wieder importieren:

$ ./flow site:export > my_site.xml
$ ./flow site:import --filename my_site.xml

Geschwindigkeitsvorteil durch Kontextwechsel

Falls ihr den Eindruck habt, dass sich Front- oder Backend langsamer verhalten, als sie es sollten, gibt es auch hierfür Abhilfe. Der Grund dafür, dass Neos im Auslieferungszustand im Vergleich zu anderen Web-Applikationen eher langsam wirkt, liegt in der Dateiüberwachung (engl. File Monitoring). So überprüft Flow bei jedem Klick diverse Dateien auf Änderungen; dies betrifft vor allem Konfigurations-, aber auch Code-Dateien.

Da beispielsweise das integrierte AOP-Framework mit Proxy-Klassen arbeitet, die in temporären PHP-Dateien gespeichert werden (um das Prinzip nachzuvollziehen schaut doch nach einigen Klicks im Frontend einfach mal in das Verzeichnis Data/Temporary/Development/Cache/Code/Flow_Object_Classes), muss Flow permanent die Original-Dateien auf Änderungen überwachen, um gegebenfalls neue Proxy-Klassen erstellen zu können. Das gleiche Prinzip gilt für Fluid-Templates, die ebenfalls in Form temporärer PHP-Dateien zwischengespeichert werden.

Während des Entwicklungsprozesses macht diese Überwachung von Dateien auf Änderungen grundsätzlich Sinn; immerhin hat sie den Effekt, dass Änderungen am Code – wie von anderen Web-Applikationen ja auch gewohnt – sofort sichtbar werden. Würde dies nicht geschehen, müsste der Entwickler nach jeder Änderung manuell den Cache leeren. Die Seite aus einem leeren (oder kalten) Cache immer wieder komplett neu aufzubauen, würde letzten Endes noch mehr Geschwindigkeit kosten, als die Dateiüberwachung.

Wird an dem Projekt jedoch nicht mehr entwickelt, macht die Dateiüberwachung keinen Sinn mehr, denn im Produktivbetrieb muss nicht mehr damit gerechnet werden, dass sich der zugrunde liegende Code alle paar Minuten ändert. Aus diesem Grund unterscheidet Flow (und damit auch Neos) zwischen zwei sogenannten Kontexten: dem Produktions- und dem Entwicklungskontext. Im Entwicklungskontext ist die Dateiüberwachung aktiv, darüber hinaus werden allgemein weniger Daten zwischengespeichert und das System präsentiert ausführlichere Debugging-Ausgaben. Im Produktionskontext hingegen wird sehr aggressiv gecacht, was die Performance der Seite stark verbessert.

Standardmäßig operiert jede Flow-Applikation erst einmal im Entwicklungskontext. Das Aktivieren des Produktionskontexts ist über eine Umgebungsvariable möglich, die entweder in der VirtualHost-Konfiguration des Webservers oder in einer .htaccess-Datei gesetzt werden kann. Um den Produktionskontext per .htaccess zu aktivieren, könnt ihr einfach die Anweisung SetEnv FLOW_CONTEXT Production in die Datei Web/.htaccess eintragen.

Hinweis: In den von Mittwald bereitgestellten Neos-Testaccounts ist der Produktionskontext bereits standardmäßig aktiviert. Um wieder zurück in den Entwicklungskontext zu wechseln, könnt ihr einfach die entsprechende Anweisung in der .htaccess wieder entfernen bzw. auskommentieren.

Funktionierende Paketverwaltung

Eventuell wird euch auch bereits der PHP-Fehler aufgefallen sein, der im Neos-Backend in der Paketverwaltung auftritt. Hierbei handelt es sich um einen bereits bekannten Bug der Version 1.0-alpha1. Einen Patch zur Behebung dieses Problems könnt ihr euch hier herunterladen. In unseren Test-Accounts ist dieser Patch standardmäßig bereits eingespielt.

Fazit

Obwohl sich Neos noch in der Entwicklungsphase befindet, macht die erste Alpha-Version bereits einen vielversprechenden Eindruck. Das flexible Content-Modell ist ein deutlicher Vorteil gegenüber des starren Modells früherer TYPO3-Versionen. Die Konfigurationssprache TypoScript 2 greift die Philosophie des klassischen TypoScripts auf, nach der alles konfigurierbar ist, und erweitert den Sprachumfang dabei um sinnvolle Konzepte wie beispielsweise die Prototypenbasierte Objektorientierung.

Selbstverständlich kann Neos in der ersten Alpha-Version vom Funktionsumfang noch nicht mit dem „großen Bruder“ TYPO3 mithalten. Dennoch hinterlässt der Release einen durchweg positiven Eindruck und macht Lust auf mehr. Die In-Place-Bearbeitung von Inhalten im Backend ist ein Quantensprung gegenüber der zuweilen umständlichen TYPO3-Oberfläche, die bereits vorhandenen Backend-Administrationsoberflächen sind gut durchdacht und konsequent umgesetzt. Mittels TypoScript 2 kann nahezu jeder Aspekt des Systems an die eigenen Bedürfnisse angepasst werden und dank des sauber implementierten, objektorientierten Flow-Unterbaus kann nahezu jeder Aspekt des Systems erweitert oder angepasst werden.

Über den Autor

Martin Helmich ist Softwareentwickler beim Webhoster Mittwald. Er ist der Verfasser der Extbase- und Fluid-Dokumentation, die von Mittwald kostenlos zum Download bereitgestellt wird. Außerdem ist er Co-Autor des Buches „Praxiswissen TYPO3“, das im O'Reilly Verlag erschienen ist.

77 Shares bis jetzt – Dankeschön!

Bewerten
VN:F [1.9.22_1171]
6 Antworten
  1. von Oink am 16.10.2012 (07:46Uhr)

    Ich mag ja Typo3 sehr, vor allem das mächtige Typoscript. Bin seit 3.8 dabei. Was mich aber schon immer gestört hat, dass das Typo3 von Version zu Version ein immer aufwendigeres Backend bekommt. Man bekommt den Eindruck das die meiste Entwicklungsenergie dorthin verschwendet wird. Zudem wird das Backend auch teilweise langsamer, da es mittlerweile sehr Javascript intensiv ist. Ich hätte mir eine RPC-Api(wie bei Wordpress) für das Typo3 gewünscht und eine passende Backend-Anwendung für Linux, Mac und Windows. Man könnte es so schön aufbauen, das man z.B. mit dieser Anwendung zwischen Typo3-Projekten wechseln kann, vllt sogar Versionunabhängig. Und man hätte auch keine Performanceprobleme, da die Anwendung nativ auf dem jeweiligen System laufen würde. Vllt. kommt jemand noch auf die Idee. *träum*

  2. von gerie am 16.10.2012 (08:30Uhr)

    Ich stimme Oink zu. Außerdem kommt mir langsam vor TYPO3 ist zur Spielwiese für die Programmierer geworden. Man konzentriert sich darauf ein nettes System für den Programmierer zu schaffen, wo diese sich austoben können und vergisst dabei, den eigentlichen Zweck eines CMS.
    Ein gutes CMS sollte natürlich modern und flexibel sein, in erster Line soll aber der Redakteur damit zurecht kommen. Einfache und intuitive Bedienbarkeit und vor allem auch eine Optimierung der Ladezeiten, sollte bei der Entwicklung im Vordergrund stehen.
    Auch der ganze Versions-Salat verwirrd zunehmend. Die Entwickler sollten sich mal mit den Endanwendern an einen Tisch setzen um den Focus nicht zu verlieren.

    Ich bin auch seit der Version 3.8 dabei und immer noch von TYPO3 überzeugt. Ich hoffe nur das Schiff steuert nicht in die falsche Richtung und kentert auf offener See.

  3. von michaelh74 am 16.10.2012 (09:43Uhr)

    Zwei kleine Anmerkungen zu den Kommentaren:
    - TYPO3 NEOS hat eigentlich so gar nichts mit TYPO3 CMS (bis auf die Dachmarke TYPO3) zu tun. Das ist ein völlig neu konzipiertes und programmiertes CMS. Zwischen Alpha und Stable wird sich geschwindigkeitstechnisch sich noch einiges tun,
    - Das Backend wurde mit 4.7.x im Vergleich zu 4.5.x deutlich schneller.

    Ich finde das Grundkonzept von NEOS sehr gut und zukunftsorientiert. Der Umstand, dass der Funktionsumfang und die Anzahl der verfügbaren Extension der derzeitigen v4 hinterher hängt, stört mich wenig. Mit den Kernfunktionalitäten von NEOS kann man bereits viele Fälle abdecken (wenn stable) und Extension sind sowieso nicht immer brauchbar ;-)-.

  4. von Neo007 am 16.10.2012 (19:52Uhr)

    Ich habs mir bei Mitwald mal installiert, und finde das Konzept genial, für den Endanwender sicher ne Bereicherung, und der sollte ja eigentlich im Fokus liegen.
    Leider Funktioniert bei mir das Backend noch nicht richtig, kann z.B. nicht ins Packages Management, da kommt ein Serverfehler, aber hoffe das wird noch ;-)

    Generell sollte man jetzt auch noch nicht auf Speed schauen, ich schau mir dir Funktionen und Neuerungen an, und kann es kaum erwarten richtig loszulegen.

  5. von Matthias Witte am 18.10.2012 (14:41Uhr)

    Anmerkung zum Artikel:

    Im YAML Format sind die Einrückungen mit Leerzeichen entscheidend. Sprich sie sind nicht aus optischen Gründen da sondern haben Einfluss auf den Sinn da es keine Klammern oder ähnliches gibt.

    Da ich davon ausgehe das der Autor dies weiß liegt das wohl an t3n bzw. der Ausgabe.

  6. von Webdesign | Annotary am 17.01.2013 (17:36Uhr)

    [...] Title Publisher More from Harald Fellhauer: Webtools Miscellaneous Sort Share t3n.de       3 months [...]

Deine Meinung

Bitte melde dich an!

Du musst angemeldet sein, um einen Kommentar schreiben zu können.

Jetzt anmelden

Mehr zum Thema TYPO3
TYPO3 CMS 6.2: Alle Features der neuen Version im Überblick
TYPO3 CMS 6.2: Alle Features der neuen Version im Überblick

Am gestrigen Dienstag wurde die neue Version 6.2 des beliebten Content-Management-Systems (CMS) TYPO3 veröffentlicht. Welche Änderungen und Verbesserungen es gibt, haben wir hier für euch... » weiterlesen

TYPO3: Neue Versionen des CMS veröffentlicht
TYPO3: Neue Versionen des CMS veröffentlicht

Mehrere Versionen von TYPO3 haben Updates erfahren. Aktuell wurden die Versionen 6.1.5, 6.0.10, 4.7.15 und 4.5.30 des Content-Management-Systems veröffentlicht. » weiterlesen

TYPO3 Neos veröffentlicht: „Neos ist wie Lego“
TYPO3 Neos veröffentlicht: „Neos ist wie Lego“

Neben TYPO3 CMS gibt es jetzt TYPO3 Neos, das „next-generation open source content management system“ der TYPO3-Community. Ob es wirklich „neos“ ist und ob TYPO3-Fans ein schönes... » weiterlesen

Kennst Du schon unser t3n Magazin?

t3n 35 jetzt kostenfrei probelesen! Alle Inhalte des t3n Magazins Diesen Hinweis verbergen