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
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
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
... 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
siehe tsref
zB $params = array();
$params['parameter'] = $SeitenID;
$params['additionalParams'] = '&foo=1';
georg
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
$SeitenID ist aber schon eine gültige ID?
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!
genau.
wenn du realurl dann mit der ext verwenden willst, dann sollten die parameter so ausschauen &tx_deineext[var1]=10
alle infos gibts hier > https://docs.typo3.org/m/typo3/reference-typoscript/main/en-us/Functions/Typolink.html
vielleicht geht der knopf auf dass du den gleichen aufruf wie sonst in TS mit typolink machst
georg
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
das ist geschmacksache, wenn du nicht mehr als 1 plugin hast, kannst du es auch weglassen
georg
Viele Dank,
Du hast mir mal wieder sehr weiter geholfen!
LG
Julia