StartTypo33D-GrafikAustralienProjektePrivat




Typo3 » Tutorien » Entwicklung » Erstelle korrekte Typolinks

Erstelle korrekte Typolinks

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.

 

Typoscript

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.

 

Vorbereitung

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();
    }
 
    ...
 
  }
}

 

Links erstellen

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.