====== RealURL ====== ===== Einrichtung ===== - RealURL installieren - TypoScript ergänzen - Konfiguration anlegen (realurl_conf.php) - .htaccess einrichten ==== TypoScript ==== - **absRefPrefix:** Stellt allen in TYPO3 generierten Links den gesetzten String voran, in diesem Beispiel ein Slash ''/''. Dies sorgt für Root-relative Pfade. - **prefixLocalAnchors:** Fügt Ankern (Sprungmarken auf einer Seite) den vollen Pfad voran. - **simulateStaticDocuments:** Muss deaktiviert werden, wenn RealURL verwendet wird. - **tx_realurl_enable:** Aktiviert RealURL. config { absRefPrefix = / prefixLocalAnchors = all simulateStaticDocuments = 0 tx_realurl_enable = 1 } Das früher gesetzte '''' Element im Head-Bereich ist heute nicht mehr zeitgemäß. ==== realurl_conf.php ==== Die Datei wird in den Ordner ''typo3conf/'' gelegt. Das Multidomain-Setup stammt von [[http://wiki.wowa-webdesign.de/typo3/realurl-conf|Wolfgang Wagner]], die gewünschten Domains können oben gesetzt werden. Bei Verwendung mit **news** müssen die Seiten-UIDs für Einzelansicht(en) und ggf. Kategorien und Tags angepasst werden. === RealURL 2.x + News System (news) === [ 'spaceCharacter' => '-', 'languageGetVar' => 'L', 'expireDays' => '7', 'rootpage_id' => $rootPageUid1, 'autoUpdatePathCache' => '1', ], 'init' => [ 'enableCHashCache' => 1, 'appendMissingSlash' => 'ifNotFile', 'enableUrlDecodeCache' => 1, 'enableUrlEncodeCache' => 1, ], 'fileName' => [ 'defaultToHTMLsuffixOnPrev' => 1, 'acceptHTMLsuffix' => 1, 'index' => [ 'feed.rss' => [ 'keyValues' => [ 'type' => $rssFeedPageType, ] ], 'sitemap.xml' => [ 'keyValues' => [ 'type' => 841132, ], ], ] ], 'preVars' => [ [ 'GETvar' => 'L', // IDs of all languages and the wanted url part 'valueMap' => [ // 'de' => '0', 'en' => '1', ], 'noMatch' => 'bypass', ], [ 'GETvar' => 'no_cache', 'valueMap' => [ 'nc' => 1, ], 'noMatch' => 'bypass', ], ], 'fixedPostVars' => [ 'newsDetailConfiguration' => [ [ 'GETvar' => 'tx_news_pi1[action]', 'valueMap' => [ // 'detail' => '', ], 'noMatch' => 'bypass' ], [ 'GETvar' => 'tx_news_pi1[controller]', 'valueMap' => [ // 'News' => '', ], 'noMatch' => 'bypass' ], [ 'GETvar' => 'tx_news_pi1[news]', 'lookUpTable' => [ 'table' => 'tx_news_domain_model_news', 'id_field' => 'uid', 'alias_field' => 'title', 'addWhereClause' => ' AND NOT deleted', 'useUniqueCache' => 1, 'useUniqueCache_conf' => [ 'strtolower' => 1, 'spaceCharacter' => '-' ], 'languageGetVar' => 'L', 'languageExceptionUids' => '', 'languageField' => 'sys_language_uid', 'transOrigPointerField' => 'l10n_parent', 'autoUpdate' => 1, 'expireDays' => 180, ] ] ], 'newsCategoryConfiguration' => [ [ 'GETvar' => 'tx_news_pi1[overwriteDemand][categories]', 'lookUpTable' => [ 'table' => 'sys_category', 'id_field' => 'uid', 'alias_field' => 'title', 'addWhereClause' => ' AND NOT deleted', 'useUniqueCache' => 1, 'useUniqueCache_conf' => [ 'strtolower' => 1, 'spaceCharacter' => '-' ] ] ] ], 'newsTagConfiguration' => [ [ 'GETvar' => 'tx_news_pi1[overwriteDemand][tags]', 'lookUpTable' => [ 'table' => 'tx_news_domain_model_tag', 'id_field' => 'uid', 'alias_field' => 'title', 'addWhereClause' => ' AND NOT deleted', 'useUniqueCache' => 1, 'useUniqueCache_conf' => [ 'strtolower' => 1, 'spaceCharacter' => '-' ] ] ] ], '17' => 'newsDetailConfiguration', // '18' => 'newsDetailConfiguration', // For additional detail pages, add their uid as well // '21' => 'newsTagConfiguration', // '4' => 'newsCategoryConfiguration', ], 'postVarSets' => [ '_DEFAULT' => [ // EXT:news 'controller' => [ [ 'GETvar' => 'tx_news_pi1[action]', 'noMatch' => 'bypass' ], [ 'GETvar' => 'tx_news_pi1[controller]', 'noMatch' => 'bypass' ] ], 'dateFilter' => [ [ 'GETvar' => 'tx_news_pi1[overwriteDemand][year]', ], [ 'GETvar' => 'tx_news_pi1[overwriteDemand][month]', ], ], 'page' => [ [ 'GETvar' => 'tx_news_pi1[@widget_0][currentPage]', ], ], ], // configure filenames for different pagetypes // 'fileName' => [ // 'defaultToHTMLsuffixOnPrev' => 1, // 'acceptHTMLsuffix' => 1, // 'index' => [ // 'print.html' => [ // 'keyValues' => [ // 'type' => 98, // ], // ], // 'rss.xml' => [ // 'keyValues' => [ // 'type' => 100, // ], // ], // 'rss091.xml' => [ // 'keyValues' => [ // 'type' => 101, // ], // ], // 'rdf.xml' => [ // 'keyValues' => [ // 'type' => 102, // ], // ], // 'atom.xml' => [ // 'keyValues' => [ // 'type' => 103, // ], // ], // ], // ], ], ]; // Domain 2: $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['realurl'][$domain2] = $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['realurl'][$domain1]; $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['realurl'][$domain2]['pagePath']['rootpage_id'] = $rootPageUid2; //$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['realurl'][$domain2]['fixedPostVars']['129'] = 'newsDetailConfiguration'; // Domain 3: $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['realurl'][$domain3] = $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['realurl'][$domain1]; $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['realurl'][$domain3]['pagePath']['rootpage_id'] = $rootPageUid3; //$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['realurl'][$domain3]['fixedPostVars']['257'] = 'newsDetailConfiguration'; // Local web dev environment: $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['realurl']['client-1.test'] = $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['realurl'][$domain1]; $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['realurl']['client-2.test'] = $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['realurl'][$domain2]; $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['realurl']['client-3.test'] = $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['realurl'][$domain3]; ==== .htaccess ==== Verwendet einfach die .htaccess, die im TYPO3-Core mitgeliefert wird. Diese enthält alle nötigen Konfigurationen. ---- ===== RealURL-Ergänzungen für Extensions ===== ==== tt_news ==== **realurl_conf.php (Auszug):** 'postVarSets' => [ '_DEFAULT' => [ // tt_news archive parameters: 'archive' => [ [ 'GETvar' => 'tx_ttnews[year]', ], [ 'GETvar' => 'tx_ttnews[month]', 'valueMap' => [ 'january' => '01', 'february' => '02', 'march' => '03', 'april' => '04', 'may' => '05', 'june' => '06', 'july' => '07', 'august' => '08', 'september' => '09', 'october' => '10', 'november' => '11', 'december' => '12', ] ], ], // tt_news pagebrowser: 'browse' => [ [ 'GETvar' => 'tx_ttnews[pointer]', ], ], // tt_news categories: 'select_category' => [ [ 'GETvar' => 'tx_ttnews[cat]', ], ], // tt_news articles and searchwords: 'article' => [ [ 'GETvar' => 'tx_ttnews[tt_news]', 'lookUpTable' => [ 'table' => 'tt_news', 'id_field' => 'uid', 'alias_field' => 'title', 'addWhereClause' => ' AND NOT deleted', 'useUniqueCache' => 1, 'useUniqueCache_conf' => [ 'strtolower' => 1, 'spaceCharacter' => '-', ], ], ], [ 'GETvar' => 'tx_ttnews[backPid]', ], [ 'GETvar' => 'tx_ttnews[swords]', ], ], ], ], ==== tt_products ==== **realurl_conf.php (Auszug):** 'preVars' => [ // EXT:tt_products - remove parameter [ 'GETvar' => 'tt_products[backPID]', 'valueMap' => [ 'dummy' => '1', ], 'noMatch' => 'bypass', ], ], 'postVarSets' => [ '_DEFAULT' => [ // EXT:tt_products 'categories' => [ [ 'GETvar' => 'tt_products[cat]', 'lookUpTable' => [ 'table' => 'tt_products_cat', 'id_field' => 'uid', 'alias_field' => 'title', 'addWhereClause' => ' AND NOT deleted', 'languageGetVar' => 'L', 'useUniqueCache' => 1, 'useUniqueCache_conf' => [ 'strtolower' => 1, 'spaceCharacter' => '-', ] ] ] ], 'products' => [ [ 'GETvar' => 'tt_products[product]', 'lookUpTable' => [ 'table' => 'tt_products', 'id_field' => 'uid', 'alias_field' => 'title', 'addWhereClause' => ' AND NOT deleted', 'languageGetVar' => 'L', 'useUniqueCache' => 1, 'useUniqueCache_conf' => [ 'strtolower' => 1, 'spaceCharacter' => '-', ] ] ] ], 'backPID' => [ [ 'GETvar' => 'tt_products[backPID]', 'lookUpTable' => [ 'table' => 'pages', 'id_field' => 'uid', 'alias_field' => 'title', 'addWhereClause' => ' AND NOT deleted', 'languageGetVar' => 'L', 'useUniqueCache' => 1, 'useUniqueCache_conf' => [ 'strtolower' => 1, 'spaceCharacter' => '-', ] ] ] ], ], ], ---- ===== Diverses ===== ==== Ordner aus Pfad entfernen ==== Wenn z.B. einige Seiten in Ordnern angelegt wurden, um die Menüausgabe zu beeinflussen (www.example.org/topmenu/impressum.html), kann man die Ordner aus dem RealURL-Pfad entfernen. In den Seiteneigenschaften wird dafür ''Exclude from speaking URL'' aktiviert. Wurden die Seiten schon im Frontend aufgerufen, muss der RealURL-Cache gelöscht werden (siehe unten). ==== Pfade anpassen: RealURL-Cache ==== In der Ansicht //WEB > Info// können die im Frontend verwendeten Pfade eingesehen und verändert werden. Hierfür wird //RealURL management// und //ID-to-path-mapping// ausgewählt. Der Pfad kann wahlweise geändert oder gelöscht werden. Im letzteren Fall wird RealURL den Pfad selbständig neu anlegen. Falls dabei Probleme auftreten: TYPO3-Cache löschen, aus dem Backend abmelden oder die Seite(n) mit einem anderen Browser aufrufen. Dies kann auch nötig werden, wenn man eine neue Seite erstellt, die denselben Namen trägt wie eine ältere, deaktivierte. Durch den RealURL-Cache wird im Frontend noch auf die alte Seite verwiesen, was zu Fehlern führt. Einen manuellen Pfad stellt man am besten über die Seiteneigenschaften ein, wo nach Installation von RealURL das neue Feld ''Speaking URL path segment'' existiert. ==== Automatische Konfiguration von RealURL ==== Falls statt der oben angegebenen die automatische Konfiguration aktiviert wurde, erstellt RealURL diese für den aktuellen Stand der TYPO3-Instanz. Werden neue Domains oder Sprachen hinzugefügt, wird diese Konfiguration nicht aktualisiert! Daher muss die Datei ''_autoconf.php'' unter //typo3conf/realurl/// gelöscht werden. Ist diese nicht mehr vorhanden, legt RealURL eine neue Konfiguration an. ==== Einzelne Seiten von RealURL ausschließen ==== 'pagePath' => array( 'type' => 'user', 'userFunc' => 'EXT:realurl/class.tx_realurl_advanced.php:&tx_realurl_advanced->main', 'spaceCharacter' => '-', 'languageGetVar' => 'L', 'expireDays' => 7, 'rootpage_id' => 1, # Seiten-IDs: 'excludePageIds' => '3,7,11', ), ==== Mehrsprachige 404-Seiten mit RealURL ==== Eine mehrsprachige Seite sollte dem Nutzer auch eine lokalisierte Fehlermeldung ausgeben, wenn mal eine Seite nicht gefunden werden kann. Mit eingerichtetem RealURL kann folgender Code verwendet werden. Ab TYPO3 CMS 6.x muss dieser in die ''AdditionalConfiguration.php'' in ''typo3conf/'', in älteren Versionen kam er direkt in die ''localconf.php''.\\ Zudem werden die lokalisierten Inhalte auf einer Seite mit dem Namen "404" direkt unterhalb der Root-Ebene eingetragen. Quelle: http://blog.exites.de/blog/2011/12/404-fehlerseite-bei-mehrsprachiger-typo3-seite-und-realurl/ ==== Defaultsprache immer mit Sprachkürzel in URL ==== Hierfür muss ''noMatch'' aus der //realurl_conf.php// entfernt werden und stattdessen ''valueDefault'' hinzugefügt werden. Beachte: als Wert das gewünschte Kürzel eintragen, nicht die UID der Sprache!\\ Über TypoScript wird der GET-Parameter ''L'' mit ''0'' als Default-Wert ausgegeben, falls nicht anderweitig gesetzt. **Typoscript:** config.defaultGetVars.L = 0 **realurl_conf.php (Auszug):** 'preVars' => array( array( 'GETvar' => 'L', 'valueMap' => array( 'de' => '0', 'en' => '1', ), // 'noMatch' => 'bypass', 'valueDefault' => 'de', ), ),