Zum Inhalt springen

Wie verlinkt man in einer Extension?

Erstellt am 29. Oktober 2007 · 12 Antworten · letzte Antwort am 30. Oktober 2007

Tags: Links, Frage

Julia1 ·

Hallo alle zusammen,

ich bin gerade dabei, meine erste Extension zu schreiben - klappt bislang auch recht gut. Im Rahmen der Extension möchte ich jetzt gerne einige Variablen per Link an eine andere Seite weiter geben. Das Sieht bislang so aus:

$content .= " <a href=\"/index.php?id=$conf[variable1]&wert=$row[uid]&zeit=$row[year]\">$row[year]</a>";

... das funktioniert soweit auch gut. Was mich aber stört ist das "index.php" in dem Link. Denn über lang oder kurz möchte ich über realurl auch schöne URLs bekommen - und das geht ja wohl kaum, wenn das index.php fix steht, oder?

Wie verlinkt man also besser / eleganter?

Liebe Grüße
Julia

Julia1 ·

Hallo Georg,

Dank Deines kurzen Hinweises bin ich bei Google auf folgende Seite zu dem Thema gestoßen:

http://hachmeister.org/de/typo/tutorien/entwicklung/erstelle-korrekte-typolinks/

Dort wird das Thema erklärt. Ich habe die einzelnen Schritte nachvollzogen und komme auf fast perfekte Links.

Fast aus folgendem Grund:

Meine Typolinks sehen wie folgt aus:
index.php?id=31&no_cache=1&id=32&wert=1&zeit=2006

id=31 ist die Seite auf der ich mich gerade befinde - und hat nichts im Link zu suchen. Der Link sollte also wie folgt aussehen:

index.php?no_cache=1&id=32&wert=1&zeit=2006
(wobei das no_cache=1 erstmal unwichtig ist - glaube ich zumindest!)

Was habe ich gemacht:
Anfang der function main() habe ich den folgenden Code hinzugefügt (siehe Tutorial)

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

Dann habe ich an der Stelle, an der der Link erscheinen soll, folgenden Code eingefügt:

$temp_conf = $this->typolink_conf;
$temp_conf["additionalParams"] .= "&id=$conf[variable1]&wert=$row[uid]&zeit=$row[year]";
$temp_conf["useCacheHash"] = $this->allowCaching;
$temp_conf["no_cache"] = !$this->allowCaching;        
$the_link = $this->local_cObj->typolink("$row[year]", $temp_conf);

Wie gesagt, das ist das Ergebnis:
index.php?id=31&no_cache=1&id=32&wert=1&zeit=2006

und die id=31 hat in meinem Link nichts zu suchen!
Wo ist der Fehler?

LG
Julia

just2b ·

du kannst in deiner ext einfach
$this->cObj->typolink('linktext',$params); aufrufen, das reicht.

und natürlich brauchst du eine Seite auf die du verlinken willst!

georg

Julia1 ·

... ist der ganze Code am Anfang der main-Funktion also überflüssig?

wenn ich jetzt in meiner Funktion folgenden Code schreibe:

$content .= $this->cObj->typolink('linktext',$params);

steht einfach 'linktext' UNVERLINKT - und daher natürlich auch ohne Parameter. Ich denke mal das "Deine" $params = "meine" $additionalParams sind, welche ich definieren muss, oder?

$temp_conf["additionalParams"] .= "&id=$conf[variable1]&wert=$row[uid]&zeit=$row[year]";

Wie komme ich jetzt zu meinem Link?

LG
Julia

just2b ·

siehe tsref

zB $params = array();
$params['parameter'] = $SeitenID;
$params['additionalParams'] = '&foo=1';

georg

Julia1 ·

Hallo Georg,

ok, so weit so gut, das versehe ich alles. Mein PHP-Code sieht also wie folgt aus:

$params = array();
$params['parameter'] = $SeitenID;
$params['additionalParams'] = '&foo=1';
$content .= $this->cObj->typolink('MeinLinktext',$params);

Nur dummerweise steht 'MeinLinktext' immer noch UNVERLINKT! Was muss ich machen, damit 'MeinLinktext' ein richtiger Link ist?

LG
Julia

Julia1 ·

nein, war natürlich keine gültige ID !!!!! ;-) ;-)
jetzt funktioniert es - ich bin begeistert, super.

Bitte erlaube mir eine letzte Frage:

In die 'additionalParams' kommen also alle Variablen (bis auf die Zielseiten-ID) rein, die ich brauche, oder?

Z.B. so:

$params['additionalParams'] = "&var1=$var1&var2=$var2&var3=$var3&var4=$var4";

LG Julia

Georg, ich werde mich bald erkenntlich zeigen - versprochen!

Julia1 ·

ich verstehe!!!!

... aber dann ohne '_pi1' oder?

meine Extension hat im Objektbrowser den Namen:
tx_meineextension_pi1

Die Links müssen dann also so aussehen:
&tx_meineextension[var1]=10

oder so?
&tx_meineextension_pi1[var1]=10