TYPO3-Tutorial: RealURL verstehen

TYPO3 Tutorials by undkonsorten BerlinWir haben schon mehrfach über schöne URIs in TYPO3 berichtet, nachwievor das mächtigste Tool dafür ist Realurl. Wie verfährt man aber bei Extension, für die im Netz keine Snippets zu finden sind? Wir zeigen's am Beispiel einer Galerie-Extension, für die uns keine Dokumentation vorlag.Ausgangssituation: Die Galerie-Extension soll "schöne URIs" bekommen, die für Menschen und (Such-) Maschinen besser lesbar ist. RealURL ist als Extension installiert, aber die Galerie wird noch in der Form ?tx_gallery_pi1[pointer]=0&tx_gallery_pi1[item]=74&cHash=2506cb0645 angehängt. Hierbei ist das Feld "pointer" das erste Bild der angezeigten Seite, also bei pointer = 0 (wie im Beispiel), werden die ersten 4 Bilder angezeigt, bei pointer = 4 die zweite Seite (Bilder 5-8) - die Galerie ist in diesem Beispiel so konfiguriert, dass pro Seite 4 Bilder angezeigt werden. Das Feld "item" bezeichnet den Datensatz in der Galerie, im Beispiel besteht dieser Datensatz aus ID, Titel, Referenz auf Grafikdatei und erläuterndem Text. Diese id (also das Feld "item", 74 im Beispiel) stimmt nicht mit dem pointer überein, d.h Seite 3 (pointer=8) kann z.B. mit "item" Nr. 35 anfangen. Um den cHash müssen wir uns nicht kümmern, der wird von RealURL standardmäßig über den cHash-Cache umgesetzt. Ziel ist, dass die URI in der Form "/galerie/seite-2/bildtitel.html" angezeigt wird. Es muss also das Feld "pointer" in "seite-x" umgesetzt werden. Und bei "item" muss in der Datenbank nach dem zugehörigen Titel nachgeschaut werden, damit ein lesbarer Name entsteht. Gleichzeitig sollen Doppeldeutigkeiten vermieden werden, und auch keine Sonderzeichen als %20 oder ähnliches maskiert werden. Vorgehensweise: Als erstes empfehlenswert ist die Installation der Extension Realurl Configurator. Damit ist die Konfiguration von Realurl (also der realurlconfig.php) einfach möglich, vor allem ist ein Syntaxcheck vorgeschaltet, so dass man keine fehlerhaften Konfigurationsdateien hochlädt. Außerdem gibt es eine RTE mit Syntax-Highlighting. Folgendes muss nun in die realurlconf.php (über den Realurl Configurator) unter postVarSets und _DEFAULT eingetragen werden:
// Galerie soll so angezeigt werden: galerie/seite-2/titel.html
'galerie' => array(

   // Pointer=erstes Bild der angezeigten Vorschauseite,
   // wird in der Datei class.tx_realurl_userfunctest.php umgesetzt, siehe dort
   array('GETvar' => 'tx_gallery_pi1[pointer]',
   'userFunc' => 'EXT:realurl/class.tx_realurl_userfunctest.php:&tx_realurl_userfunctest->main',
   ),

   // Das jeweilige Bild
   array('GETvar' => 'tx_gallery_pi1[item]',
      'lookUpTable' => array(
      'table' => 'tx_gallery_item', // Tabelle, in der die Bilder stehen
      'id_field' => 'uid', // zugeordnetes ID-Feld
      'alias_field' => 'title', // welches Feld soll als Navigationsname angezeigt werden?
      'addWhereClause' => ' AND NOT deleted',
      'useUniqueCache' => 1, // keine Doppeldeutigkeiten
      'useUniqueCache_conf' => array ( 
         // Feintuning des Navigationsnamens
         'strtolower' => 1,
         'spaceCharacter' => '-',
      ),
   ),
),
),

Die Kommentare sollten erklären, wie der Name des Bildes entsteht. Bleibt die Umsetzung der Seitenzahl, hierbei ist zu beachten dass pointer=0 auf "seite-1" pointer=4 auf "seite-2" und soweiter umgesetzt werden. Die dafür nötige Umrechnung ist ausgelagert in die Datei class.tx_realurl_userfunctest.php. Der relevante Code in dieser Datei sieht folgendermaßen aus:

class tx_realurl_userfunctest { function main($params, $ref) { if ($params['decodeAlias']) { return $this->alias2id($params['value']); } else { return $this->id2alias($params['value']); } } // Bis hierher Vorgabe, zunächst die Funktion, die die ID in den Navigationsnamen umsetzt function id2alias($value) { return 'seite-'.(($value/4)+1); // Die Formel: ID/4+1, noch ein "seite-" davorgehängt - fertig // Die Zahl 4 muss ersetzt werden, wenn sich die Anzahl der Bilder pro Seite ändert, dann aber auch unten in der Funktion alias2id! } // Die folgende Funktion setzt den Navigationsnamen in die ID um function alias2id($value) { if (ereg('^seite-([0-9]+)$',$value,$reg)) { // Die regular expression zieht aus dem String die Seitenzahl return ($reg[1]-1)*4; // Jetzt muss noch die Seitenzahl in pointer umgerechnet werden: (Nr-1)x4. } } } Hier wird also der Rest der Umsetzung übernommen. Auch hier sollte alles durch die Kommentare erklärt werden.


Kommentare

Hallo,

als Ergänzung sehr zu empfehlen ist fl_realurl_image um Bilder auch SEO tauglich zu machen.

Zu finden unter http://typo3.org/extensions/repository/view/fl_realurl_image/current/

auch für nicht typo3 anwender hilfreich. urls umschreiben und google-friendly zu gestalten ist auch für wikis ein Thema!

Moin, Moin! ist nur ein ein Beispiel.

Moinsenz!

Danke! Superschnelle Antwort und super Artikel. - Das begreif sogar ich. *feix*

LG, Oli

Im Repository einfach nach "Configurator" oder direkt nach danp_realurlconfigurator suchen:

http://typo3.org/extensions/repository/view/danp_realurlconfigurator/1.0.2/

Moin, Moin!

Hab auf dem T3-Online-Repository nach dem RealURL-Configurator gesucht und bin leider nicht fündig geworden.

Könnt ihr mir verraten wo ich den bekommen kann?

LG, Oli

Hey Super, ich hab es endlich verstanden. Mit RealURL hatte ich immer so meine Probleme. Danke.

Gute Anleitung selbst das idmapping für extensions zu implementieren.

Unter obiger URL finden sich noch Infos den speaking path einer Seite flexibler zu generieren.

Hallo

Also danke für diese genau Beschreibung von Realurl!

LG aus Österreich


Kommentar schreiben

* Diese Felder sind erforderlich