web & mobile DEVELOPER 07 / 2015 – Neos CMS 2.0

wmd-07-2015

 

TYPO3 Neos 2.0

Knapp 1,5 Jahre nach der ersten Veröffentlichung steht das vielversprechende PHP Open Source CMS in der Version 2.0 zur Verfügung. Viele spannende Funktionalitäten sind in diese Major-Version eingeflossen, die der folgende Artikel näher beleuchten wird.

Von Patrick Lobacher

Erst noch als Version 1.3 angekündigt, wurde die Versionsnummer während der Inspiring Conference (die vom 27.-28.03.2015 in Kolbermoor stattfand und sich nur auf TYPO3 Flow und Neos konzentriert) auf 2.0 erhöht. Einerseits wurde dies damit begründet, da man TYPO3 Flow ebenfalls auf eine neue Major-Version 3.0 angehoben hat, aber andererseits auch damit, weil man in diese Version richtige viele spannende Funktionalitäten integriert hat.

Download & Installation

Sehr wahrscheinlich ist die Version 2.0 bei Erscheinen des vorliegenden Artikels bereits veröffentlicht worden. Dann finden Sie Hinweise zu Download und Installation auf der folgenden Website: https://neos.typo3.org/develop/download.html

Sollte dies noch nicht der Fall sein oder wenn Sie keine Installation durchführen wollen, um sich die neue Version einmal näher anzusehen, können Sie über die folgende URL auf die aktuelle Entwicklungsversion zugreifen:

http://neos-master.demo.typo3.org

Gehen Sie hier zunächst auf „Try me“, um sich einen Login für das Backend anzulegen.

Mehrsprachiges Backend

Längst überfällig war es, das Backend mehrsprachig anzubieten. Während Entwickler meist mit englisch-sprachigen Labels keine Probleme haben, will der Redakteur allerdings oftmals in seiner Muttersprache arbeiten.

neos20_lobacher_01

 

Zum Ändern der Sprache geht man in das Modul Administration – User Management und editiert seinen Benutzer. Über die Auswahlbox Interface Language schließlich kann man eine von derzeit 10 Sprachen (weitere sind in Vorbereitung) wählen, darunter Deutsch, Französisch, Spanisch, Holländisch und weitere.

Die Default-Sprache und die zur Verfügung stehenden Sprachen für das Backend-Interfaces kann über die folgenden Yaml-Schlüssel in der Datei Settings.yaml eingestellt werden. Dabei dient der Schlüssel scrambleTranslatedLabels dazu, um alle noch nicht übersetzte Labels anzuzeigen und sollte im Produktivbetrieb ausgeschaltet warden.

Listing 1: Settings.yaml

Die zugehörigen Sprachdateien (im Format XLIFF) befinden sich an der folgenden Stelle: Packages/Application/TYPO3.Neos/Resources/Private/Translations. Dort gibt es pro Sprache ein Unterverzeichnis (z.B. de für Deutsch)  und darin die verschiedenen Sprachdateien.

Das Neos Projekt verwendet für die Übersetzungen einen eigenen Sprachserver, bei dem sich jeder anmelden und eigene Übersetzung beisteuern kann:

https://crowdin.com/project/typo3-neos

 

Event Log

Oftmals will man sich einen Überblick darüber verschaffen, wer welche Inhalte wie und wann verändert hat. Dazu hat man Neos ein Event Log spendiert – welches alle Benutzerinteraktionen aufzeichnet und diese in einem Backend-Modul übersichtlich darstellt.
neos20_lobacher_02
Hier kann man dann auch direkt zu dem Element springen, welches im Log aufgeführt wird. Für spätere Versionen von Neos sind hier zusätzliche Informationen (wie eine genaue Änderungsübersicht) geplant.

 

Sicherheit 2.0

Das Security-Framework wurde in den letzten 2 Jahren deutlich generalüberholt und steht nun in einer erweiterten und verbesserten Version zur Verfügung.

  • Komplettes Ausblenden von Teilen des Node-Trees
  • Schutz von beliebigen Methoden-Aufrufen
  • Definition der Sichtbarkeit von beliebigen Elementen in Abhängigkeit des authentifizierten Benutzers
  • Einschränkung der Anzeige von Backend Modulen
  • Einschränkung, welche TYPO3CR Node Types erzeugt werden dürfen
  • Einschränkung des Bearbeitens von Teilen des Node-Trees
  • Einschränkung der Anzeige von Eigenschaften im Property Inspektor

Zudem wurden die Funktionalitäten an die Domäne von Neos angeglichen – damit ist es nun möglich, unter anderem folgende Abfragen durchzuführen:

Listing 2: Settings.yaml

Die Einstellungen dazu werden in der Datei Policy.yaml durchgeführt.

Im folgenden Beispiel wollen wir einschränken, dass von jedem (Rolle TYPO3.Flow:Everybody)auf einer Produktseite nur Texte angelegt werden können und dass nur registrierte Kunden (Rolle Acme.SomePackage:RegisteredCustomers) den geschützten Kundenbereich betreten können.

Listing 3: Einstellungen in der Policy.yaml

Weitere Beispiele finden sich u.a. in der Präsentation Security 2.0 von Andreas Förthner und Bastian Waidelich: http://de.slideshare.net/netlogix/typo3-neos-and-flow-security-20

SEO & Social Build-In

Erste Version von Neos hatten SEO und Social Connections noch nicht nach oben priorisiert – dies hat sich mit 2.0 geändert. So steht ein eigenes Paket TYPO3.Neos.Seo zur Verfügung, welches folgende Funktionalitäten zur Verfügung stellt:

  • Manuelles Überschreiben des Titels
  • Meta-Description
  • Meta-Keywords
  • Robots: noindex und nofollow
  • Twitter Cards (Summary, Summary + Bild, Photo)
  • Facebook OpenGraph
  • Canonical URL
  • Automatische Generierung von Links zu alternativen Sprachversionen <link rel=“alternate“…
  • Automatische Generierung einer XML-Sitemap über die URL /sitemap.xml bzw. /[lang-isocode]/sitemap.xml

Zur Verfügung stehen die Eigenschaften im Property Inspektor in einem eigenen Tab – nur der Titel-Override befindet sich im Tab „General“.

 

neos20_lobacher_03

 

Google Analytics Build-In

Um die Performance der eigenen Seite zu kontrollieren, war man bisher darauf angewiesen, die dazu notwendigen Zahlen in Google Analytics nachzusehen. Dazu musste man aber immer einen eigenen Tab im Browser aufmachen und dann parallel navigieren.

neos20_lobacher_04

Daher liegt der Gedanke nah, die Google Analytics Zahlen direkt in das CMS zu integrieren. Neos hat dies sehr elegant gemacht und dafür einfach einen Tab im Property-Inspektor reserviert. Zuständig dafür ist das neue Paket TYPO3.Neos.GoogleAnalytics.

Per Default sind folgende Werte sichtbar:

  • Grafische Anzeige der Session-Anzahl über ein Zeitraum von 3 Monaten
  • Sessions, PageViews und User im letzten Monat
  • Anteile an Desktop, Mobile und Tablet
  • Anzahl neue und wiederkehrende User

Die Metriken (welche angezeigt werden sollen und für welche Zeiträume) sind natürlich höchstflexibel einstellbar. So sind die generellen Zugangsdaten und Konfigurationen in der Datei Settings.yaml eingetragen.

Listing 4: GA-Konfig in der Settings.yaml

Die Konfiguration der Darstellung wiederum wird im NodeType durchgeführt:

Listing 5: GA-Konfig in der NodeTypes.yaml

 

Überarbeitung des Media Moduls

Das Media Modul wurde zudem auch deutlich überabeitet. So kann man nun alle Assets nach Typ filtern, sowie die Sortierung nach verschiedenen Informationen wie Dateinamen oder Datum der letzten Modifizierung ändern.

neos20_lobacher_05

Zudem werden in der Liste zu zusätzlich auch die Größe und die letzte Modifizierung angezeigt.

Überarbeitung des User Managements

Durch die Einführung des neuen Security Frameworks ist es nun auch möglich, dass ein Benutzer verschiedene Rollen annehmen kann, die ggf. unterschiedliche Rechte haben. So gibt es vordefiniert einen Administrator und einen Editor und User selbst kann auch beide Rollen annehmen. Richtig sinnvoll wird dies spätestens dann, wenn ein User sowohl eine Backend-Rolle (zu pflegen) wie auch eine Frontend-Rolle (z.B. für einen geschlossenen Bereich) bekommt.

neos20_lobacher_06

 

Welche Rollen existieren und zur Auswahl stehen, legt die Datei Policy.yaml fest.

Listing 6: Policy.yaml

ChildNodes Reihenfolge

Es ist nun möglich, die Position von Childnodes beim automatischen Erzeugen über die Eigenschaft position festzulegen. Im Beispiel wird die ChildNode header vor der ChildNode main positioniert.

Listing 7: NodeTypes.yaml

Mögliche Positionierungsangaben sind:

  • start (<weight>)
  • end (<weight>)
  • before <key> (<weight>)
  • after <key> (<weight>)
  • <numerical-order>

 

Globale Cache Identifier

Es wurde ein neues TypoScript-Objekt TYPO3.TypoScript:GlobalCacheIdentifiers eingeführt, welches  globale Cache-Identifier zur Verfügung stellt. Ändert sich deren Wert, hat dies Auswirkungen auf alle Caches. Per Default gibt es hier bereits die Identifikatoren format (Format, wie html) und baseUri (Protokoll, wie http/https und Domain und Port). Weitere können leicht hinzugefügt werden.

Listing 8: TypoScript

 

Weitere Fizzle-Operatoren

Die Fizzle-Operatoren wurden um die folgenden erweitert: <, <=, >, >=

Damit sind Ausdrücke in der folgenden Form möglich:

 

Cloud Asset Management

Heutzutage sind Cloud Services sehr verbreitet. Man verwendet Google drive, Dropbox oder OneDrive um Dateien und Assets zu verwalten. Zusätzlich sollten moderne Applikationen in der Lage sein, um mit PaaS Systeme wie Heroku oder AWS EC2 zusammen zu arbeiten. Da diese Systeme kein schreibbares und persistentes Dateisystem zur Verfügung zu stellen, wird ein alternatives Speichersystem für Assets benötigt. Zudem werden CDNs für statische Assets verwendet, um die Website performant zu halten.

Mit Flow 3.0 (und damit respektive Neos 2.0) hat ein neues Resource Management Einzug gehalten, welches in der Lage ist, all das zu leisten.

Einerseits erlaubt dieses, persistente Ressourcen (wie Bilder) zu verwenden, die der Benutzer beispielsweise auf Amazon S3 geladen hat und andererseits ist es damit möglich Ressourcen aus dem Output der Website (z.B. Bilder, welche per Crop oder Resize behandelt wurden) auf einem CDN wie Akamai or Rackspace CloudFiles zu publizieren.

 

Verschiedenes

Zusätzlich zu den großen Änderungen gab es noch viele weitere:

  • Behebung von mehr als 400 Bugs
  • Das Neos Projekt wird in Kürze auf Github umgestellt
  • Die Lizenz von TYPO3 Flow wird von GPL auf MIT geändert
  • Das CLA (Contributor License Agreement) wird aufgehoben
  • Anzeige von Meta-Daten für Nodes im Property Inspektor (Erstellt am, Bearbeitet am, Veröffentlicht am…).
  • Verbeserung der Performance (Ladezeiten einer Seite in 70-90 Millisekunden)
  • Erweiterung des Setup-Prozesses um die Auswahl eines alternativen Bild-Renderer
  • Im Neos-Backend Inspector können nun dynamische Sources geladen werden (z.B. News, Produktlisten, …)
  • eigene Doctrine-Types möglich
  • HHVM Kompatibilität
  • ab sofort wird PHP 5.5 vorausgesetzt

 

Ausblick 2015

Für 2015 hat sich das TYPO3 Neos Team noch allerhand vorgenommen – folgende Features sollen in die nächsten Versionen in den nächsten Monaten integriert werden:

  • Integration von externen Services: Flickr, Vimeo, YouTube, OneDrive, Dropbox, Google Drive, One Drive, External API
  • Multi Site Support: Cross-Site Linking, Konfiguration je Site
  • Übersetzungen: Split View und Review Workflow
  • Verbesserung der User Experience
  • Etablierung eines Publishing Workflows
  • Überarbeitung der Navigations-Komponente
  • Strukturiertes Editieren: Inline Validierung, Inline Hilfe, Inline Editieren von Bildern
  • Entwickler-Werkzeuge: Logging Modul, Command Modul, TypoScript Browser und Debugger, Neos NodeType Creator
  • Docker Setup
  • Verbesserung der Dokumentation
  • Support von Shared Hosting
  • Möglichkeit Neos ohne CLI zu betreiben
  • Vereinfachung der Installation
  • Besserer Preview von Inhalten
  • Redirect Support
  • u.v.a.m.

 

Fazit

TYPO3 Neos präsentiert sich in der Version 2.0 sehr solide und besitzt nun die wichtigsten Features, um auch komplexere Projekte damit zu realisieren. Nahezu 1000 Referenzprojekte jeglicher Größenordnung (mit stark steigender Tendenz) zeigen, dass Neos vom Markt sehr gut adaptiert wird und zu einem der großen Player im Bereich CMS avanciert.

 

Links zum Thema

Neos Website
http://neos.typo3.org

Neos Kompendium

Neos Handbuch
http://www.oreilly.de/catalog/typo3neosger/index.html

Security 2.0

Leave a Comment.