Zum Inhalt springen

Folgeseite einer Extension ändern

Erstellt am 16. August 2006 · 4 Antworten · letzte Antwort am 17. August 2006

Tags: Frage

jrab ·

Hi,

ich würde gern in einer selbstgebastelten Extension innerhalb der bereitgestellten Funktionen

pi_list_searchBox_search
getFieldHeader_sortLinkOption
pi_linkTP_keepPIvars

eine andere Folgeseite angeben, also nicht dieselbe Seite, sondern eine andere Seite mit einer anderen UID.

Diese andere Seite soll die Extension wieder beinhalten, nur mit anderem Layout.

Ausserdem muss es RealURL-kompatibel sein.

Weiss jemand Rat? Danke.

basti79 ·

Erstmal kann ich deine Frage nicht richtig einordnen. Ich verstehe darunter: "Kann ich in einem selbstgebauten Formular auf eine andere UID verweisen?"

In diesem Falle wäre die Antwort: ja, kannst du.

Je nach Bedarf kannst du das sogar beliebig kompliziert gestalten.

Du mußt erreichen, dass der HTTP-Request, wenn der Benutzer "Submit" drückt, auf eine andere ID verweist. Erstmal ist hierzu wichtig, ob die Methode GET oder POST ist - bei Typo3 in der Regel GET, nur weiß ich nicht, was genau du machst.

Wenn das ein GET-Formular ist, kannst/solltest du dem Formular ein verstecktes Eingabefeld mitgeben, etwa:

$content.="<form name="meinformular" action="GET">";
$content.="<input type="hidden" name="id" value="1234" />";
...

Das "beliebig kompliziert" betrifft jetzt die Tatsache, dass man eventuell ja auch noch weitere Parameter durchgeben will... L (Sprache) wäre da so ein Kandidat.

Ein Post-Formular ist auch behandelbar - nur muß man da etwas Tricksen. Einerseits kann man die ID einfach in die URL eingeben:

$content.="<form name="meinformular?id=123" action="POST">";

Andererseits kann man genau das Bleibenlassen und auch ein verstecktes Feld übergeben - Typo3 fragt an dieser Stelle $_REQUEST ab, so dass beide Sorten parameter "durchkommen" - Was jedoch das Problem zur Folge hat, dass GET-Parameter beim Submit-Request übernommen werden - was je nach Servereinstellungen dazu führt, dass die ID des GET-Parameters verwendet wird, wenn man nichts dagegen tut, etwa so:

$content.="<form name="meinformular?" action="POST">";

HTH

jrab ·

Hm, klappt irgendwie nicht:

$out.= "<form method="\"post\"" name="\"?id"><div".$this->pi_classParam('searchbox')."><p>";

		//$out.= $this->pi_list_searchBox();
		$out.= '<input type="text" name="'.$this-" />prefixId.'[sword]" value="'.htmlspecialchars($this->piVars['sword']).'"'.$this->pi_classParam('searchbox-sword').' /><input type="submit" value="'.$this-" />pi_getLL('pi_list_searchBox_search','Search',TRUE).'"'.$this->pi_classParam('searchbox-button').' />'.
		'<input type="hidden" name="no_cache" value="1" />'.
		'<input type="hidden" name="'.$this-" />prefixId.'[pointer]" value="" />';

		$out.= "</p></div></form>";

Auch nicht mit einem hidden-Feld. Ist habe RealUrl aktiviert. Muss ich da irgendwie eine Id in Url konvertieren?

basti79 ·

Oha. Ja ok, da mußt du dann natürlich auf einen ganz anderen Pfad verweisen.

Etwa:

<form action="/german/sucheantwort/">

(/ am anfang - Pfad wird absolut verstahden - Server würd ich weglassen da hier nicht relevant - schadet aber auch nichts, solang du die Seite nicht umziehst)

Und dann gucken, dass auf /german/sucheantwort/ deine Zielseite zu finden ist.

steffenk ·

nur als Anmerkung:
action sollte immer den Syntax haben: index.php?id=pid

Diese Pid kann man aus dem TS auslesen und es somit flexibel gestalten.
Natürlich muss die Zielseite ein Inhaltselement der Extension haben.