Schöne URLs mit TYPO3 Neos

Heute schreibe ich darüber, wie man bei der Verwendung von Plugins mit eigenen Daten schöne und sprechende URLs erzeugen kann. Ein Plugin in TYPO3 Neos ist nichts anderes, als ein TYPO3 Flow Paket. In der offiziellen Dokumentation ist beschrieben, wie man ein Plugin anlegt und in Neos verfügbar macht (http://docs.typo3.org/neos/TYPO3NeosDocumentation/IntegratorGuide/CreatingAPlugin.html). Nachdem man das Plugin so konfiguriert hat steht dieses unter den verfügbaren Inhaltselementen zur Verfügung. Außerdem kann man über das Inhaltselement PluginView die Anzeige der Detail Ansicht etc. auf eine andere Seite verlegt werden. Dazu muss auf dieser anderen Seite lediglich ein Plugin View Inhaltselement eingebunden und konfiguriert werden. Wenn das alles so fertig eingerichtet ist können wir uns die Seite bereits ansehen und von der Listenansicht zu einer Einzelansicht wechseln. Bei der Einzelansicht besteht allerdings bezüglich der URLs noch Optimierungsbedarf. Die im Moment ausgespielten Detail URLs beinhalten etwas in der Art:

 

?--vendor_sitename-pluginname[@package]=package.name
&--vendor_sitename-pluginname[@controller]=standard
&--vendor_sitename-pluginname[@action]=detail
&--vendor_sitename-pluginname[object][__identity]=3084731f-869f-43a3-56c3-9156f24baad5

Diese GET Parameter benötigt TYPO3 Neos um das richtige Plugin zu rendern. Es ist jedoch nicht notwendig, dass diese alle in der URL übergeben werden. In der Datei Routes.yaml kann man einstellen wie URLs in dem Fall generiert werden sollen. Für obige Parameter könnte man beispielsweise die folgende Konfiguration vornehmen:

-
  name: 'Detail Route'
  uriPattern: '{node}/details/{--vendor_sitename-pluginname.object}.{@format}'
  defaults:
    '@package': 'TYPO3.Neos'
    '@controller': 'Frontend\Node'
    '@format': 'html'
    '@action': 'show'
    '--vender_sitename-pluginname':
      '@package': 'Package.Name'
      '@controller': 'Standard'
      '@action': 'detail'
      '@format': 'html'
  routeParts:
    node:
      handler:    TYPO3\Neos\Routing\FrontendNodeRoutePartHandler
    '--vendor_sitename-pluginname.object':
      objectType: '\Package\Name\Domain\Model\Object'
      uriPattern: '{property}'
  appendExceedingArguments: TRUE

Die obige Regel führt dazu, dass nur noch die Property in der URL ausgegeben wird. Es wird also eine URL in der Art

http://{domain}/{node}/detail/property.html

erzeugt und nicht wie vorher:

http://{domain}/{node}?--vendor_sitename-pluginname[@package]=package.name
&--vendor_sitename-pluginname[@controller]=standard
&--vendor_sitename-pluginname[@action]=detail
&--vendor_sitename-pluginname[object][__identity]=3084731f-869f-43a3-56c3-9156f24baad5

Die neuen URLs sind für Besucher viel einfacher zu lesen und auch für Google sind diese besser, da in der URL noch einmal ein Keyword untergebracht ist.

War dieser Artikel verständlich? Habt ihr Fragen oder sollte ich das ganze detaillierter beschreiben dann meldet euch einfach, Entweder über einen Kommentar unter diesem Beitrag, über das Kontaktformular oder per E-Mail.

TYPO3 Neos vs. TYPO3 CMS

Was sind die Unterschiede zwischen Neos und CMS. Beides sind Produkte unter dem Label TYPO3. Ursprünglich war der Plan, dass Neos nach Fertigstellung das CMS ablösen sollte. Dieser Plan ist gescheitert und beide Produkte werden nach wie vor noch weiter entwickelt. Zum aktuellen Zeitpunkt ist die Oberfläche von Neos beeindruckender und intuitiver für Redakteure zu bedienen.

Aus der offiziellen Demo von TYPO3 Neos stammt der folgende Screenshot.Bildschirmfoto 2015-05-03 um 20.57.37

zum Vergleich dazu hier ein Screenshot aus der Version 7.1 vom TYPO3 CMS.Bildschirmfoto 2015-05-03 um 21.00.16
Beide Demo Versionen sind über http://demo.typo3.org erreichbar.
Leicht zu erkennen ist, dass man bei Neos das Frontend sieht und die Backend Elemente nur darüber gelegt sind. Auch das bearbeiten von Inhalten erfolgt direkt im Front/Backend. Die neue Version von TYPO3 CMS erinnert immer noch stark an die vorherigen Versionen, auch wenn das Backend deutlich moderner aussieht.

Die Hürde sich in Neos einzuarbeiten sollte man als Entwickler jedoch nicht unterschätzen. Gerade wenn es etwas anspruchsvollere Aufgaben zu meistern gilt als nur Inhalt anzuzeigen kann es mit viel ausprobieren verbunden sein bis die richtige Lösung gefunden wird. Hilfreich ist es sicherlich wenn man sich vorher schon einmal mit TYPO3 Flow beschäftigt hat, das Framework auf dem TYPO3 Neos basiert.

TYPO3 CMS kann auf eine Vielzahl an Plugins, sowie den Extension Manager, zur einfachen Installation verweisen. Dagegen gibt es im Neos Projekt keinen Extensionmanager. Eventuelle Plugins bzw. Erweiterungen müssen als abhängige Pakete in der composer.json hinterlegt und über composer installiert werden. Viele Funktionen für die man unter TYPO3 CMS ein Plugin benötigt kann man in Neos jedoch von Haus aus realisieren. Ich habe gerade in einer Installation von TYPO3 CMS nachgesehen und die Extensions:

  • Formhandler
  • Realurl
  • Gridelements

werden neben einigen Kundenspezifischen Extensions dort genutzt. Ich denke viel mehr Erweiterungen habt ihr auch nicht im Einsatz. Ich vergleiche das jetzt einmal und schaue wie ich diese Dinge mit Neos realisieren würde. Schöne URLs liefert Neos von Haus aus und auch für die Darstellung von externen Daten besteht die Möglichkeit schöne URLs zu erzeugen. Formulare kann Neos auch mehr oder weniger von sich aus. Dazu wird das Paket TYPO3.Form verwendet, welches in einer Standardinstallation automatisch mit installiert wird. Bleibt Gridelements als Extension, auch diese Funktion kann man mit Neos ohne eigenes Plugin realisieren. Dazu muss nur ein entsprechender NodeType konfiguriert werden, welcher entsprechend weitere ChildNodes konfiguriert hat. Die Funktion für die ich bei TYPO3 CMS noch Plugins benötigte sind bei Neos von Haus aus dabei.

Die Entscheidung TYPO3 Neos oder TYPO3 CMS kann man immer nur selber treffen, jedoch ist Neos meiner Meinung nach inzwischen so weit, dass es sich definitiv lohnt einen Blick darauf zu werfen. Ich werde in den nächsten Tagen und Wochen weitere Artikel veröffentlichen die sich mit dem ein oder anderen Problem bei Neos oder auch bei CMS beschäftigt.