[TYPO3-UG Freiburg] RealUrl vs. CoolUri

Mikel lists at con-version.com
Thu Nov 20 12:02:12 CET 2014


Moin zusammen,

da ich ja vorgestern spontan doch noch absagen musste, stelle ich meine 
Erfahrungen mit RealUrl und neuerdings mit CoolUri hier zur Debatte.

Ich verwende seit Jahren RealUrl, in eigentlich allen Projekten. 
Allerdings bin ich damit seit der Einführung von Extbase immer an 
größere Grenzen gestoßen. Extbase bzw. der entsprechende Fluid Link 
Viewhelper erzeugt nicht gerade Links, über die sich Suchmaschinen erfreuen.

Folgender Ausgangspunkt:

Eine Extbase-Extension hat drei Actions, die verschiedene Parameter 
benötigen, um korrekt anzuzeigen.

Action 1 --> List
Zum Beispiel eine Liste von News, gefiltert nach Jahr (in meinem 
Beispiel kann über ein Dropdown das Jahr gewechselt werden).
Benötigte Parameter in URL --> NUR das Jahr, action (list)

Action 2 --> Show
Die Detailansicht einer News.
Benötigte Parameter in URL --> uid des entsprechenden Datensatzes, 
action (show)

Action 3 --> Download eines angehängten PDF's
Ein Newsdatensatz hat Relationen zu FAL-Dateien.
Benötigte Parameter --> uid der Datei, action (download)

"Ungeschönte" URI's:

Action 1 --> 
domain.xy/index.php?id=24&tx_extname_pluginname[year]=2010&tx_extname_pluginname[action]=list&tx_extname_pluginname[controller]=ModelName
Action 2 --> 
domain.xy/index.php?id=24&tx_extname_pluginname[ModelName]=4&tx_extname_pluginname[action]=show&tx_extname_pluginname[controller]=ModelName&cHash=0149de7f00fac9921b95f9c8c1300b44
Action 3 --> 
domain.xy/index.php?id=24&tx_extname_pluginname[file]=121&tx_extname_pluginname[ModelName]=4&tx_extname_pluginname[action]=downloadDocument&tx_extname_pluginname[controller]=PressRelease&cHash=838076fbc461129a496b19dd70c73799

Ziel:
Action 1 --> domain.xy/pfad-zur-seite-mit-plugin/2010
Action 2 --> domain.xy/pfad-zur-seite-mit-plugin/pfad-zur-news (kann 
auch domain.xy/pfad-zur-seite-mit-plugin/2010/pfad-zur-news sein)
Action 3 --> 
domain.xy/pfad-zur-seite-mit-plugin/pfad-zur-news/download/uid-der-datei

Problematik mit RealUrl:

Es fängt eigentlich schon an mit dem Parameter für den Controller. Wenn 
man den Fluid-VH link.action verwendet, dann wird dieser per Default mit 
übergeben. Wenn man allerdings bei allen Plugins voraussetzen kann, dass 
alle den selben Controller verwenden, dann ist dieser Parameter in der 
URL unnötig. Nun könnte man stattdessen einfach den link.page VH 
verwenden. Ist meiner Meinung nach aber nicht besonders toll.
Erzeugt man die Links also per link.action, dann werden alle nicht 
benötigten Parameter in die URL geschrieben. Dies sorgt für einen 
unnötig langen Pfad --> 
domain.xy/pfad-zur-seite/controllername/show/name-des-datensatzes-oder-uid
Bei etwas komplexeren Konstellationen hat man da schnell mal 5 unnötige 
Ebenen zusammen.

Die weitere Problematik: Wenn man in einer Action einen Parameter setzt, 
welcher in einer anderen action nicht notwendig ist und diesen per 
RealUrl rewritet, dann werden Fehler geworfen (Controller blabla not 
allowed by this plugin).

Und noch eine: Da das Jahr in der List-Action "geschönt" wird, taucht an 
allen Stellen, an denen das Jahr nicht übergeben wird, ein doppelter 
Slash auf. Man kann in RealUrl zwar noMatch = bypass setzen, dies 
allerdings nur für ValueMaps. Per Workaround müsste man sich jetzt eine 
ValueMap für alle Jahre erstellen (ein Array mit den vorhandenen 
Jahreszahlen). Wird das Jahr nicht übergeben, trifft ValueMatch nicht. 
Erst dann greift der "bypass" und das Pfadsegment wird nicht ersetzt. 
Bei Jahreszahlen funktioniert dieser Workaround. Wenn man hier 
allerdings Kategorien übergeben wollte, dann muss man sich schon was 
besonderes einfallen lassen.

CoolUri:

Die Ersetzungen werden per XML gesteuert. Dabei stehen die gleichen 
Mittel zur Verfügung wie in RealUrl (valueMatch, DB-Lookups, etc). Man 
kann allerdings deutlich mehr Einfluss nehmen. Über einen 
"predefinedpart" kann man z.B. den Controller einfach aus der URL 
rausnehmen, wenn dieser nicht für die Logik benötigt wird. Zudem kann 
auch auf die Reihenfolge der Pfadsegmente Einfluss genommen werden. 
Parameter, welche nur in bestimmten Actions vorausgesetzt werden, können 
ersetzt werden, ohne, dass diese auch in anderen Actions vorausgesetzt 
werden (doppelte Slashes bzw. Fehlermeldung).

Die Nachteile, die ich derzeit sehe:
- Wenig Dokumentation
- die Größe der Community nur ein Bruchteil der RealUrl-Community
- schon bei der Installation gibt es Probleme, da die Tabellen für den 
Pfad-Cache nicht geschrieben werden. Ich habe diese manuell in der 
Datenbank angelegt, um den Cache nutzen zu können
- das Fehlerseiten-Handling von TYPO3 wird "deaktiviert", da CoolUri 
sein eigenes Fehlerseitenhandling mitbringt. Ich muss mal schauen, ob es 
hierfür einen Workaround gibt, da ich mir die URL's der nicht gefundenen 
Seiten bisher immer per Mail zusende, um Fehler direkt korrigieren zu 
können.

Generell lassen sich die Probleme, die ich hatte, eher schwierig in 
einer Mail erklären. Mich würde schon interessieren, wie ihr das 
Rewriting von Extensions konfiguriert, um nicht auf diese Probleme zu 
stoßen.
Habt ihr da ähnliche Erfahrungen? Würde es sich lohnen, dies mal an 
einer leeren Installation zusammen zu analysieren?

Mikel




More information about the TYPO3-UG-Freiburg mailing list