8.11.05

Dynamische Inhalte mit Typolinks im Seiten Caches

Bei der Extensions für Typo3 werdet Ihr wahrscheinlich öfters mal Extension mit dynamischen Inhalten erstellen (z.B. eine FAQ o.ä.).
Ich habe das Problem bei einem Glossar gehabt und nehme dieses jetzt auch Beispiel für die Lösung.
Mein Problem sah folgendermaßen aus: Ich habe ein Glossar, das eine Zeile mit allen Buchstaben des Alphabets als Links beinhaltet. Diese dienen als Filter um nur Schlagwörter mit dem Anfangsbuchstaben "a", "b", "c", etc. anzuzeigen. Die Links selber verweisen aber immer auf die gleiche Seite und hängen nur ein "&tx_myext_pi1[lchar]=a" an. Das wiederum funktioniert nicht mit aktiviertem Caching. So würde die Seite mit dem ersten aufgerufenen Buchstaben im Cache gespeichert und unabhängig vom gewählten Buchstaben angezeigt (da ja alle Buchstaben auf der selben Seite angezeigt werden).
Die Lösung für dieses Problem ist relativ simpel. Fügt einfach folgende Zeile in eure Klasse ein:
var $pi_checkCHash = TRUE;

Auf deren Bedeutung gehe ich nicht näher ein; wen es aber interessiert, kann es hier nachlesen.
Jetzt wird das Caching deaktiviert wenn im Link nicht der passende cHash mitübergeben wird. Um diesen Zu generieren fügt Ihr einfach folgenden Php Code in eurer main() Methode ein:
// Diese Zeile erstellt ein Objekt der Klasse 'cObj'
$this->local_cObj = t3lib_div::makeInstance("tslib_cObj");
// Hier setzt Ihr die Zielseite
// (in diesem Fall die gleiche)
$this->local_cObj->setCurrentVal($GLOBALS['TSFE']->id);

$this->typolink_conf = $this->conf["typolink."];
$this->typolink_conf["parameter."]["current"] = 1;
$this->typolink_conf["additionalParams"] =
$this->cObj->stdWrap(
$this->typolink_conf["additionalParams"],
$this->typolink_conf["additionalParams."]
);

// Diese Zeile ist wichtig um eure Konfiguration im
// Script wieder aufzuheben
unset($this->typolink_conf["additionalParams."]);

Jetzt habt Ihr eure Typolinks vorkonfiguriert.
Um euren Link jetzt schlussendlich zu generieren, müsst Ihr folgenden Code verwenden:
$temp_conf = $this->typolink_conf;
// Hier könnt Ihr eure GET Variablen anhängen
$temp_conf["additionalParams"] .= "&tx_myext_pi1[char]=a";
// Ich möchte nur eine URL, keinen kompletten Link
$temp_conf["returnLast"] = 'url';
// Ich möchte auch das Caching verwenden
$temp_conf["useCacheHash"] = 1;
// $the_link enthält nun meine generierte URL
// Wenn Ihr einen kompletten Link möchtet,
// entfernt die 'returnLast' Zeile und gebt als
// ersten Parameter, der hier "" ist, eure Beschriftung an.
$the_link = $this->local_cObj->typolink("", $temp_conf);

Und siehe da - alles funktioniert und eure Seite wird auf Ebene der GET Parameter in Verbindung mit der Seiten ID gespeichert.
Ihr könnt natürlich auch weitere Typolink Parameter hinzufügen.

Anmerkung: Der Typolink Teil stammt nicht von mir, sondern ursprünglich von typo3.hachmeister.org. Ich habe diesen zwar verändert, aber der ursprüngliche Code stammt von eben jener Website. Ich habe ihn der inhaltlichen Vollständigkeit halber hierhin übernommen.

3 Comments:

Anonymous Anonym said...

[B]NZBsRus.com[/B]
Skip Sluggish Downloads With NZB Downloads You Can Swiftly Find HD Movies, PC Games, MP3 Albums, Applications & Download Them @ Flying Rates

[URL=http://www.nzbsrus.com][B]Newsgroup[/B][/URL]

04 Februar, 2010 13:12  
Anonymous Anonym said...

Hesitate in to the dirty with two backs casinos? backing this late-model [url=http://www.realcazinoz.com]casino[/url] commander and fasten on up online casino games like slots, blackjack, roulette, baccarat and more at www.realcazinoz.com .
you can also dally our lately [url=http://freecasinogames2010.webs.com]casino[/url] orientate at http://freecasinogames2010.webs.com and subdue onto palpable spondulix !
another ancillary [url=http://www.ttittancasino.com]casino spiele[/url] in the sector of is www.ttittancasino.com , as opposed to of german gamblers, frame the category around kindly online casino bonus.

22 Februar, 2010 16:40  
Anonymous Anonym said...

top [url=http://www.001casino.com/]free casino bonus[/url] brake the latest [url=http://www.casinolasvegass.com/]casino online[/url] free no set aside perk at the best [url=http://www.baywatchcasino.com/]online casinos
[/url].

06 Februar, 2013 04:50  

Kommentar veröffentlichen

<< Home