Typo3
Typo3: Eigene Extension mit Cache-Steuerung, Indexed Search und RealUrl
Dieser Tipp ist als Erweiterung des Tipps Eigene Extension mit Cache-Steuerung und Indexed Search gedacht.
Natürlich läßt sich das erste Beispiel der eigenen Extension mit Cache und indexed_search auch mit der Extension RealURL erweitern. Dazu sind ein paar zusätzliche Eingriffe notwendig.
1. Typo3 Core
Einstellungen im Typo3-Template der Seite (Setup):
config { ... #RealUrl simulateStaticDocuments = 0 tx_realurl_enable = 1 ... }
Einfach mal RealUrl generell aktivieren - Vorraussetzung ist natürlich die installierte Extension und die angepasste .htaccess-Datei.
2. RealURL Konfiguration
Erweiterung der RealURL-Einstellungen in der localconf.php um die Parameter der eigenen Extension:
$TYPO3_CONF_VARS['EXTCONF']['realurl'] = array( '_DEFAULT' => array( 'init' => array( 'enableCHashCache' => 1, 'appendMissingSlash' => 'ifNotFile', 'enableUrlDecodeCache' => 1, 'enableUrlEncodeCache' => 1, ), ... 'postVarSets' => array( ... #Eigene Extension abnews am Schluss einfügen (hier auch zuerst der Dummytitel) 'abnews' => array( array( 'GETvar' => 'abnews[dummyTitle]' , ), ), 'bereich' => array( array( 'GETvar' => 'abnews[bereich]' , ), ), 'artikel' => array( array( 'GETvar' => 'abnews[artikel]' , ), ), ), #End of PostVarSets ... ) );
Mit dieser Konfiguration sollten wir eine URL der Form:
/<Pfad zur Page>/abnews/<Dummy-Title>/bereich/<bereich-id>/artikel/<artikel-id>/
3. Die eigene Extension selbst
Bei der eigenen Extension erweitern wir um einen Titel der in der SEO optimierten URL vorkommen soll.
function createHashLink($bereich, $artikel, $dummyTitle) { /* Parameter vordefinieren: * - $bereich ... ist eine Hierarchische Ebene bei mir * - $artikel ... ist eine * - $dummyTitle ... übergebe ich für den Link-Text und für RealURL */ //Eventuell noch vorher den Dummy-Titel um Sonderzeichen bereinigen (äöüß...)! $overrulePIvars = array("bereich" => $bereich, "artikel" => $artikel, "dummy" => $dummyTitle); $cache = 1; $clearAnyway = 1; $pageID = 2; //In meinem Fall ist alles auf eine PAGE-ID gebunden $link = $this->pi_linkTP_keepPIvars_url($overrulePIvars, $cache, $clearAnyway, $pageID); return $link; }
Also im Beispeil würde statt
/<Pfad zur Page>/abnews/<Dummy-Title>/bereich/<bereich-id>/artikel/<artikel-id>/
der Link
/<Pfad zur Page>/abnews/<Dummy-Title>/bereich/<bereich-id>/artikel/<artikel-id>/?cHash=<Typo3Hashwert>
generiert.
Nun zur Ausgabe, der Einfachheit halber gleich nur der Link eingebunden unter main()
function main($content, $conf) { $this->pi_USER_INT_obj=0; //Wenn kein cHash-Wert übergeben wurde, dann Cachen verhindern - dann können wir eine Startseite zur Extension genereieren: $cHash = t3lib_div::_GP("cHash"); if(!$cHash) { $GLOBALS['TSFE']->set_no_cache(); } $bereich = 10; $artikel = 13; $linktext = "test"; //Link erstellen und einbauen $link = $this->createHashLink($bereich, $artikel, $linktext); $content = "<a href=\"".$link."\">".$linktext."</a>"; //Zurück an Typo3 return $this->pi_wrapInBaseClass($content); }
Mit diesem Beispiel wird die aufgerufene Seite
/<Pfad zur Page>/
nicht gecached und nicht in den Index übernommen. Wenn aber auf den darin generierten Link
/<Pfad zur Page>/abnews/test/bereich/10/artikel/13/?cHash=<Typo3Hashwert>
geklickt wird, wird diese Seite hinter dem Link sowohl im Cache als auch im Index abgelegt.
Index regelmäßig leeren und neu aufbauen
Hier noch ein Hinweis zu einem Cron-Job um den Index regelmäßig zurück zu setzen und neu aufzubauen.