Autor: Karsten Hachmeister
In diesem kurzem Tutorial möchte ich zeigen, wie man Typolinks in eigenen Erweiterungen erstellt, die das Feature 'Simulate Static Documents' unterstützen und eine Ausgabe erstellen, die von Typo3 gecached wird und so auch mit der Indexed search verwendet werden können. Diese Informationen wurden aus anderen Erweiterungen zusammengetragen, speziell aus der Erweiterung tt_board.
Zuerst erstelle in der Datei 'ext_typoscript_setup.txt' eine Eigenschaft, die deiner Erweiterung mitteilt, ob caching genutzt werden soll oder nicht:
plugin.tx_myextension_pi1 {
allowCaching = 1
}
Wenn das später auf 0 gesetzt wird, werden diese Seiten nicht mehr gecached.
Bereite in der main() Funktion den Typolink vor und konfiguriere das caching:
class tx_myextension_pi1 extends tslib_pibase {
...
var $allowCaching = "";
function main($content,$conf) {
$this->conf=$conf;
...
// Preconfigure the typolink
$this->local_cObj = t3lib_div::makeInstance("tslib_cObj");
$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."]);
unset($this->typolink_conf["additionalParams."]);
// Configure caching
$this->allowCaching = $this->conf["allowCaching"]?1:0;
if (!$this->allowCaching) {
$GLOBALS["TSFE"]->set_no_cache();
}
...
}
}
Um nun Links in der Erweiterung zu erstellen, benutze das folgende Code Fragment:
$temp_conf = $this->typolink_conf;
$temp_conf["additionalParams"] .= "&tx_myextension_pi1[key]=value";
$temp_conf["useCacheHash"] = $this->allowCaching;
$temp_conf["no_cache"] = !$this->allowCaching;
$the_link = $this->local_cObj->typolink("Linktext", $temp_conf);
Danach kann man '$the_link' zu der Ausgabe hinzufügen. Das '$temp_conf' Array kann man mit allen Eigenschaften des typolink Objektes erweitern.
Wenn noch weitere Fragen bestehen, so können diese im Forum gestellt werden.