Welche Probleme können dadurch entstehen?

  • Aus SEO-Sicht sollen Urls möglichst kurz sein
  • Aus Sicht der Mehrsprachigkeit sollten Urls durchgängig in der gewünschten Sprache dargestellt werden

Ich denke, das dürfte nicht nur mir so gehen. Ich habe tt_news sehr heufig im Einsatz und benötige gut lesbare und wunschgemäße URLs. Für lesebare URLs verwende ich, wie viele, die Typo3 Extension RealUrl. Nachdem ich die Konfigurationsdatei für RealUrl modifiziert habe sind die URLs in der tt_news Singelview lesbar, aber es stört(e) mich immer mindestens ein Pfadsegment.

Übliche Konfiguration der realurl_conf.php

Normalerweise wird in den postVarSets der anzuzeigende Pfad konfiguriert. Aufgrund des exemplarischen arrays "details" ergibt sich eine URL wie /news/details/titel/.

<?
$TYPO3_CONF_VARS['EXTCONF']['realurl']['_DEFAULT'] = array(
  ...
  'postVarSets' => array(
    'details' => array(
      array(
        'GETvar' => 'tx_ttnews[tt_news]',
        'lookUpTable' => array(
          'table' => 'tt_news',
          'id_field' => 'uid',
          'alias_field' => 'title',
          'addWhereClause' => ' AND NOT deleted',
          'useUniqueCache' => 1,
          'useUniqueCache_conf' => array(
            'strtolower' => 1,
            'spaceCharacter' => '_'
          ),
          'languageGetVar' => 'L',
          'languageExceptionUids' => '',
          'languageField' => 'sys_language_uid',
          'transOrigPointerField' => 'l18n_parent'
        )
      )
    ),
  ),
);
?>

PHP Code realurl_conf normal

Modifizierte Konfiguration

Um den array-Namen ".../details/..." nicht in der URL anzuzeigen, wird die Konfiguration in die fixedPostVars geschrieben.

<?
$TYPO3_CONF_VARS['EXTCONF']['realurl']['_DEFAULT'] = array(
  ... 
  'fixedPostVars' => array(
    'ttnewsDetailConfiguration' => array(
      array(
        'GETvar' => 'tx_ttnews[tt_news]',
        'lookUpTable' => array(
          'table' => 'tt_news',
          'id_field' => 'uid',
          'alias_field' => 'title',
          'addWhereClause' => ' AND NOT deleted',
          'useUniqueCache' => 1,
          'useUniqueCache_conf' => array(
            'strtolower' => 1,
            'spaceCharacter' => '_'
          ),
          'languageGetVar' => 'L',
          'languageExceptionUids' => '',
          'languageField' => 'sys_language_uid',
          'transOrigPointerField' => 'l18n_parent'
        )
      )
    ),   
    '15' => 'ttnewsDetailConfiguration', // Override with Single View Page (ID15)
  ),
  ...
);
?>

PHP Code realurl_conf modifiziert

Resultierende URL: /news/title/
Anstelle von: /news/details/title/

Durch die modifizierte Konfiguration entfallen mögliche Probleme mit Mehrsprachigkeit. Ansonsten hieße das Pfadsegment ".../details/..." immer gleich, auch bei anderen lokalisierten Sprachen.

In der Zeile "'15' => 'ttnewsDetailConfiguration'," entspricht die '15' der Page ID der Singleview Page von tt_news und muss natürlich an die eigenen Bedürfnisse angepasst werden.

Das ganze funktioniert natürlich auch für andere Extension wie tx_news, tt_products, tt_address uvm..

Inspiriert wurde ich durch die Manuals der Extensions realurl von Dmitry Dulepov und tx_news von Georg Ringer. Vielen Dank an euch an dieser Stelle.

Viel Spaß mit schönen URLs.