Hallo,
ich kämpfe hier mal wieder mit Typoscript: eigentlich wollte ich lediglich eine kleine Suchbox für die Indexed Search erstellen und hatte keine Lust, mich dafür in eine weitere Extension einzuarbeiten. Im Internet fand sich ein Codeschnipsel, das funktioniert auch soweit problemlos.
Als ich dann jedoch die Standardkonformität auf einer der englischsprachigen Seiten getestet habe, meckerte der Validierer zu recht herum, dass in der URL im action-Attribut das Ampersand nicht maskiert sei, d.h. die URL enthält ein & statt der entsprechenden Entity &+amp; (habe es leider nicht geschafft, die Entity korrekt hinzuschreiben, daher die Notlösung mit dem +). Der entsprechende Typoscript-Code sieht so aus:
10 = TEXT
10.typolink.parameter = {$plugin.tx_indexedsearch.searchUID}
10.typolink.returnLast = url
10.wrap = <form action="|" id="search">
Ich habe versucht, das Problem mittels Einfügen der Zeile
10.htmlSpecialChars = 1
zu lösen, aber das hat nichts geändert. Kann mir vielleicht jemand auf die Sprünge helfen?
Vielen Dank im voraus, Zmann
Hallo,
in deinem <form> fehlt das method="GET/POST"...
ein "&" als action-target ist normal kein Problem... dann hast du sicher das "?" vorher mit drin?
Wenn du aber mit POST arbeitest, dann gib deiner action-Seite einen alias und laß die "?" und "&" weg, denn es ist "unschön" wenn du ein POST-form verwendest und dann die action-seite per GET-Methode aufrufst.
deine Sprach-Variablen und weitere Übergabeparameter einfach als hidden-input-Felder in das form einbauen.
Grüße
Hallo Wool,
danke erstmal für die Antwort.
Wool schrieb
in deinem <form> fehlt das method="GET/POST"...
ja, das hatte ich einfach weggelassen, weil ich es für irrelevant hielt, damit das Beispiel so klein wie möglich bleibt.
ein "&" als action-target ist normal kein Problem... dann hast du sicher das "?" vorher mit drin?
Natürlich, die URL war ansonsten korrekt. Leider muss das Ampersand aber laut Spezifikation auch in URLs maskiert werden, daher hat der W3C-Validierer zu Recht gemeckert.
Wenn du aber mit POST arbeitest, dann gib deiner action-Seite einen alias und laß die "?" und "&" weg, denn es ist "unschön" wenn du ein POST-form verwendest und dann die action-seite per GET-Methode aufrufst.
deine Sprach-Variablen und weitere Übergabeparameter einfach als hidden-input-Felder in das form einbauen.
Der Trick ist natürlich auch nicht schlecht. Über dieses Problem hatte ich noch gar nicht nachgedacht, aber jetzt, wo Du es sagst. Das ist in der Tat wohl nicht RFC konform: http://www.w3.org/TR/REC-html40/interact/forms.html#h-17.13.1
Wenn ich es tatsächlich als hidden field einbauen würde, müsste ich natürlich auch noch in
10.typolink.parameter = {$plugin.tx_indexedsearch.searchUID}
10.typolink.returnLast = url
dafür sorgen, dass in der URL das Ampersand nicht auftaucht, sprich der Query-Teil abgeschnitten wird. Da wüsste ich jetzt so auf Anhieb leider auch nicht, wie man das bewerkstelligt. Ich finde TypoScript wirklich sehr gewöhnungsbedürftig. Am elegantesten wäre es natürlich, wenn man in Typoscript alle query-Parameter einer URL als eine Liste bekäme und daraus dann die entsprechenden Hidden-Input-Elemente selbst zusammenbauen könnte. Ich bin für jeden Tipp in dieser Richtung dankbar.
Ich habe momentan einen Workaround verwendet, in dem ich die URL selbst zusammenbaue, wobei ich den Index der Suchergebnisseite fest eingetragen habe (also ohne die Variable $plugin.tx_indexedsearch.searchUID). Das ist aber natürlich auch nicht so schön, da es jetzt eben zwei Stellen gibt, an denen diese id korrekt eingtragen werden muss. Und natürlich verwendet diese Lösung auch POST- und GET-Variablen gleichzeitig. Darüber hatte ich mir bis jetzt gar keine Gedanken gemacht, aber das muss dann natürlich auch geändert werden.
Viele Grüße, Zmann