Sprechende URLs mit realurl oder cooluri

Der Einsatz von realurl oder cooluri wird empfohlen, weil es die Ausführungsgeschwindigkeit von ShopFusion verbessert. realurl, bzw. cooluri, installieren, konfigurieren und aktivieren Sie wie gewohnt, ohne ShopFusion dabei zu beachten. ShopFusion erkennt selbständig, ob realurl oder cooluri installiert und aktiviert wurde. Details zur korrekten Inbetriebnahme von realurl oder cooluri finden Sie in der Installationsanleitung der jeweiligen Extension.

Hinweis bei Verwendung von TYPO3 < 6.2.4:
Falls Sie die realurl oder cooluri Extension installieren oder updaten, nachdem ShopFusion bereits installiert ist, dann reinstallieren Sie bitte die TYPO3 ShopFusion Extension über den Extension Manager. Deaktivieren Sie die Extension dazu kurz und aktivieren Sie sie wieder. Dies kann erforderlich sein, damit Sprechende URLs bei Ihnen korrekt funktionieren. Grund hierfür ist, dass TYPO3 die Extensions in der Installationsreihenfolge lädt. Wird ShopFusion vor realurl/cooluri vom TYPO3 geladen, dann wird ggf. der notwenige Hook vom TYPO3 nicht korrekt installiert.

realurl Beispielkonfiguration

Das nachfolgende Beispiel1) zeigt eine mit ShopFusion erprobte realurl Konfiguration. Passen Sie die Konfiguration ggf. einfach Ihrem Anwendungsfall entsprechend an.

realurlconf.php
<?php 
$TYPO3_CONF_VARS['EXTCONF']['realurl'] = array(
  '_DEFAULT' => array(
	  'init' => array(
            'enableCHashCache' => 1,
            'appendMissingSlash' => 'ifNotFile',
            'enableUrlDecodeCache' => 1,
            'enableUrlEncodeCache' => 1,
            'respectSimulateStaticURLs' => 0,
            'postVarSet_failureMode'=>'redirect_goodUpperDir',
        ),
    'redirects_regex' => array (
    ),
 
    'preVars' => array(
                        array(
                                'GETvar' => 'no_cache',
                                'valueMap' => array(
                                    'no_cache' => 1,
                                ),
                                'noMatch' => 'bypass',
                        ),
			array(
                             'GETvar' => 'L',
                             'valueMap' => array(
                                                'en' => '1',
                                                'fr' => '2',
                                                'nl' => '3',
                                                'dk' => '4',
                                        ),
                                'noMatch' => 'bypass',
			),
                ),
 
	'pagePath' => array(
            'type' => 'user',
            'userFunc' => 'EXT:realurl/class.tx_realurl_advanced.php:&tx_realurl_advanced->main',
            'spaceCharacter' => '-',
            'languageGetVar' => 'L',
            'expireDays' => 7,
            'rootpage_id' => 1,
        ),
 
      'postVarSets' => array(
		'_DEFAULT' => array(
		 // news archive parameters
		'archive' => array(
                    array(
                        'GETvar' => 'tx_ttnews[year]' ,
                        ),
                    array(
                        'GETvar' => 'tx_ttnews[month]' ,
                            'valueMap' => array(
                            'january' => '01',
                            'february' => '02',
                            'march' => '03',
                            'april' => '04',
                            'may' => '05',
                            'june' => '06',
                            'july' => '07',
                            'august' => '08',
                            'september' => '09',
                            'october' => '10',
                            'november' => '11',
                            'december' => '12',
                            )
                        ),
                    ),
                // news pagebrowser
                'browse' => array(
                    array(
                        'GETvar' => 'tx_ttnews[pointer]',
                        ),
                    ),
                // news categories
                'select_category' => array (
                    array(
                        'GETvar' => 'tx_ttnews[cat]',
                        ),
                    ),
                // news articles and searchwords
                'article' => 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' => '-',
                                ),
                            ),
                        ),
                    array(
                        'GETvar' => 'tx_ttnews[swords]',
                        ),
		),
 
            ),
      ),
 
      'fileName' => array(
            'defaultToHTMLsuffixOnPrev'=>1,
            'index' => array(
                'rss.xml' => array(
                    'keyValues' => array(
                        'type' => 100,
                    ),
                ),
                'rss091.xml' => array(
                    'keyValues' => array(
                        'type' => 101,
                    ),
                ),
                'rdf.xml' => array(
                    'keyValues' => array(
                        'type' => 102,
                    ),
                ),
                'atom.xml' => array(
                    'keyValues' => array(
                        'type' => 103,
                    ),
                ),
                'sitemap.xml' => array(
                    'keyValues' => array(
                        'type' => 200,
                    ),
                ),
            ),
    	),
 
   ),
 );
?>

Hinweis: Zusätzliche / andere preVars können u.U. zu Fehlverhalten führen, wenn diese auf einer CMS Shop Seite verwendet werden. Beachten Sie bitte auch die Bedingungen für die Mehrsprachigkeit, falls Sie eine mehrsprachiges CMS betreiben möchten.

Bitte beachten Sie außerdem, dass dieses Beispiel nicht für den Multidomainbetrieb geeignet ist. Wenn Sie eine Konfiguration für eine bestimmte Domain anlegen, also nicht _DEFAULT, dann legen Sie bitte ebenfalls eine Konfiguration für die Domain inklusive Port 80 an. Das ist notwendig, damit das ShopFusion für Magento/OXID Modul beim Kontaktieren des TYPO3s keinen 404 Fehler als Antwort erhält.

Beispiel:

$TYPO3_CONF_VARS['EXTCONF']['realurl']['domain.tld'] = $TYPO3_CONF_VARS['EXTCONF']['realurl']['_DEFAULT'];
$TYPO3_CONF_VARS['EXTCONF']['realurl']['www.domain.tld'] = 'domain.tld';
$TYPO3_CONF_VARS['EXTCONF']['realurl']['domain.tld:80'] = 'domain.tld';
$TYPO3_CONF_VARS['EXTCONF']['realurl']['www.domain.tld:80'] = 'domain.tld';

cooluri Beispielkonfiguration

CoolUriConf.xml
<?xml version="1.0" encoding="utf-8"?>
<cooluri>
 
  <cache>
    <usecache>1</usecache><!-- READONLY -->
    <params2cool>
      <!-- how often (in days) should be links updated (Typo3 cache needs to be cleared) -->
      <checkforchangeevery>1</checkforchangeevery>
    </params2cool>
    <cool2params>
      <!-- how many days should old links (those that are redirected to existing) should be kept active -->
      <oldlinksvalidfor>365</oldlinksvalidfor>
    </cool2params>
 
    <pagenotfound>
      <!-- the status has to meet HTTP protocol header -->
      <status>HTTP/1.0 404 Not Found</status>
      <behavior type="message"><![CDATA[ <h1>Page not found!</h1> ]]></behavior>
      <!-- possible @type values: 
        page - will show a file (loaded using file_get_contents)
        redirect - will redirect to a certaing URL
        message - will output a message
        userfunc - user function is called, there's a default implementation of standard TYPO3 404 handling
        <behavior type="userfunc">tx_cooluri->pageNotFound</behavior>
      -->
    </pagenotfound>
  </cache>
 
  <!-- bind a domain with a language
    @key - language id - L parameter value
    value - domain name
  -->
  <!--
  <domainlanguages>
    <domain lang="0">www.example.com</domain>
    <domain lang="1">www.example.cz</domain>
    <domain lang="2">www.example.de</domain>
  </domainlanguages>
  -->
 
  <pagepath>
    <!-- first non-empty value will be used -->
    <title>tx_realurl_pathsegment,alias,subtitle,title</title>
 
    <saveto>id</saveto><!-- READONLY -->
    <default>0</default><!-- READONLY -->
 
    <userfunc>tx_cooluri->getPageTitle</userfunc>
    <t3conv>1</t3conv>
  </pagepath>
 
  <uriparts>
    <part>
      <parameter>tx_ttnews[tt_news]</parameter>
      <lookindb>
        <to>SELECT title FROM tt_news WHERE uid=$1</to>
        <!-- if you have news items in different languages in one folder, use this sql -->
        <!-- to>SELECT title FROM tt_news WHERE (uid=$1 or l18n_parent=$1) AND sys_language_uid={L=0}</to -->
        <t3conv>1</t3conv>
      </lookindb>
    </part>
    <part>
      <parameter>tx_eeblog[showUid]</parameter>
      <lookindb>
        <to>SELECT subject FROM tx_eeblog_maintable WHERE uid=$1</to>
        <t3conv>1</t3conv>
      </lookindb>
    </part>
    <!-- you can move cHash to predefineparts to remove in from URL
         but first read the manual -->
    <part>
      <parameter>cHash</parameter>
    </part>
 
    <!-- common patterns -->
 
    <!-- this will just add this parameter value to URL -->
    <part>
      <parameter>paramA</parameter>
    </part>
    <!-- this will look up parameter value in the database table "sometable" and if found
          the value will be transformed using Typo3 csconv into URL-like value. 
        You can make all sorts of MySQL stuff here, such as add UID into the result:
        SELECT CONCAT(title,'-',uid) FROM ...
    -->
    <part>
      <parameter>paramB</parameter>
      <lookindb>
        <to>SELECT title FROM sometable WHERE uid=$1</to>
        <t3conv>1</t3conv>
      </lookindb>
    </part>
  </uriparts>
 
  <predefinedparts>
    <part>
      <parameter>no_cache</parameter>
    </part>
 
    <!-- common patterns -->
 
    <!-- parts defined this way will be removed from URL -->
    <part>
      <parameter>paramC</parameter>
    </part>
    <!-- this will prefix a value with "prefix-". Cannot be localized.
    -->
    <part key="prefix-(.*)" regexp="1">
      <parameter>paramD</parameter>
    </part>
    <!-- if parameter matches value, key will be added to URL 
         with mutliple values, use valuemaps
    -->
    <part key="thisWillAppearInUrl">
      <parameter>paramE</parameter>
      <value>ifParamEMatcesThisValue</value>
    </part>
  </predefinedparts>
 
  <valuemaps>
    <valuemap>
      <parameter>L</parameter>
      <!-- L is empty of 0, result is empty -->
      <value key="">0</value>
      <!-- L is 1, result is "en" -->
      <value key="en">1</value>
    </valuemap>
  </valuemaps>
 
  <!-- this will put L param to the first position
      for more magic see manual -->
  <paramorder>
    <param>L</param>
  </paramorder>
 
<!-- READONLY START -->
<cooluris>1</cooluris>
 
</cooluri>

Hinweis: Hierbei handelt es sich um die cooluri default-Konfiguration, wie sie mit der Extension geliefert wird. Auch bei cooluri ist es wichtig zu berücksichtigen, dass die Sprache vor dem Seitennamen eingefügt wird. Zusätzliche / andere Werte, die dem Seitennamen als URL Segment vorangestellt werden, können auch hier zu Fehlverhalten führen, wenn diese URL Segmente auf einer CMS Shop Seite verwendet werden. Beachten Sie auch hier die zusätzlichen Informationen zur Mehrsprachigkeit.

1) Bitte beachten Sie, dass die Speicherung der realurl Konfiguration in den Key _DEFAULT veraltet ist. Verwenden Sie stattdessen bitte Ihren Hostname, wie es in der realurl Dokumentation erklärt wird.
Drucken/exportieren
QR-Code
QR-Code shopfusion:konfiguration:sprechende_urls (erstellt für aktuelle Seite)