Zum Inhalt springen

Probleme mit PIDs?

Erstellt am 2. September 2003 · 14 Antworten · letzte Antwort am 17. Dezember 2003

Tags: Frage

F_L_I_P_P ·

Hallo,
ich habe ein Problem mit meinem Shop,
wenn ich von:
http://ddwebsite.diehldesign.de/index.php?id=504
auf die Detailansicht eines Produkt wechseln will bekomme ich folgende Fehldermeldung:
"Wrong parameters, GET/POST var 'tt_products' was missing."
Wenn ich allerdings die Url von "/index.php?527&backPID=504&tt_products=13" auf "/index.php?id=527&backPID=504&tt_products=13" ändere funktioniert es.
Auf die nächste Seite kann ich auch nicht wechseln, ohne "id=" in den String einzufügen.
Hat da jemand eine Idee?

JcJensen ·

da musst du in der klasse der extension mal nachgucken, da gibt es eine funktion in der der link generiert wird, da sit der fehler. kann dir leider auch nicht mehr genau sagen wo der ist :-/

F_L_I_P_P ·

aber das ist doch kein Bug in tt_products, oder?
Sonst hätten da doch schon mehr als ich nach gefragt.
Oder verstehe ich da jetzt was falsch?

hubbe ·

Ist schon einige Zeit her, seit dem dieses Problem hier geschildert wurde. Aber vielleicht hilft ja dem einen oder anderen mein Beitrag trotzdem noch.

In der Datei
<individueller Pfad>/typo3/ext/tt_products/pi/class.tx_ttproducts.php

findet sich eine Funktion namens "getLinkUrl". In dieser Funktion werden die URL's für Formulare und Links generiert. Und eben hier fehlt vor der ID-Nummer die Bezeichnung "id".

Man muss aber lediglich die Zeile

$queryString["id"] = ($id ? $id : $GLOBALS["TSFE"]->id);

auf

$queryString["id"] = 'id='.($id ? $id : $GLOBALS["TSFE"]->id);

abändern und schon funktionierts (bei mir jedenfalls).

Warum es bei anderen Shops ohne diese Anpassung funktioniert, weiß ich nicht.

Ohne diesen Eingriff funktionierten in meinem Shop folgende zwei (oder sind es evtl. sogar mehr) Dinge nicht:

1) Die Produktdetails: wenn man auf den Link für das Produkt klickte kommt nun richtigerweise die Seite mit den Details vom Produkt. Vorher kam immer nur die Produktliste.

2) Das Blättern: Wenn man ein Limit setzte, so dass nur eine bestimmte Anzahl an Produkten auf einer Seite angezeigt werden, dann funktionierten schlichtweg die Links zum Blättern nicht.

Jetzt stellt sich die Frage, warum es ohne Angabe der Bezeichnung "id" zu Fehlern kommt. Soweit ich bisher herausgefunden habe, wird in diesem Fall der letzte, und nur der letzte Parameter in der URL nicht richtig verwertet. Dieser Parameter ist dann zwar richtig in der URL enthalten, wird aber im Skript nicht richtig ausgewertet und ist dann nicht gesetzt. Deshalb funktioniert z.B. auch die Produktdetailseite nicht, da der letzte Parameter die Produkt-ID ist. Da diese nicht ausgewertet werden kann zeigt er einfach die Produktliste wieder an.

Schöne Grüße
Hubbe

fwh ·

Wen´s interessiert,

bei mir schaltete der Shop nach einem Mengen-Update etc. immer auf die Default-Language zurück.
Der Fehler lag auch in der hier behandelten Routine.
Nach der Zeile unter "$queryString["swords"]..." habe ich folgende Zeile eingefügt, um das Problem zu beheben:

$queryString["L"]= 'L='.$GLOBALS["TSFE"]->sys_language_uid;

Fand ich ganz gelungen, wo ich noch 0 Ahnung von php habe.
Grüße
D.

Stoneage ·

@hubbe: COOL! Hab mich damit auch mal rumgeärgert, und nie eine richtige Lösung gefunden, ich glaube dieser bug kommt auch bei formularen vor.

gruß,

chi

Unbekannter Benutzer ·

Der Tip mit der fehlenden ID im Query hat bei mir leider nichts gebracht ... der Fehler scheint immer dann aufzutreten, wenn man die PIDitemDisplay angegeben hat!

Ich habe mir die Listen- und die Detailansicht im Qellcode angesehen und festgestellt, dass nur in der Listenansicht im FORM-Tag unter action="" noch zusätzlich der Parameter &tt_products=[ID] mit übergeben wird, dieser fehlt aber in der Detailansicht, was zur Fehlermeldung (bei mir führt) ...

Komischerweise steht auch im Original-Template des Shops nicht mehr oder weniger an MARKER & Co., eine Zeit lang hat mein Shop auch gefunzt, auch mit veränderten HTML-Template ... der Fehler kam also "plötzlich" ... ich weiß auch nicht, was ich TS-mäßig verändert haben soll, damit es zum Fehler kommt, aber eine Lösung habe ich schon:

Wie erwähnt "fehlt" in der Detailansicht ein Parameter, der in der Listenansicht im Form-Tag zu finden ist, diesen baue ich einfach in die plass.tx_ttproducts.php des Shops als neuer Marker:

$markerArray["###FIELD_NAME###"]="recs[tt_products][".$row["uid"]."]";
		//AST: Detailansichtsfehler ...
		//manchmal geht es, machmal nicht, daher habe ich den folgenden Parameter
		//aus der Listenansicht übernommen, mit diesem funzt die Detailansicht wieder
		//der vermeindliche Fehler der fehlenden id= im Query (siehe im selben File, Forums-Bug ...)
		//scheint keine Auswirkungen zu haben ...
		$markerArray["###FIELD_ID###"]="&tt_products=".$row["uid"];

Im HTML-Template muss dieser dann noch der Marker ergänzt werden:

<FORM method="post" action="###FORM_URL######FIELD_ID###">

Fertig!

Bei mir geht wieder alles ... aber fein ist das ja nicht ... #giggle#

Unbekannter Benutzer ·

Irgendwie ist das aber dennoch alles noch sehr verdreht ... alles steht und fällt mit der PIDitemDisplay ... wenn diese nicht vorhanden ist, läuft alles wunderbar ... nur kann ich auf diese in meinem speziellen Fall nicht weglassen ...

Mit meinem Workarround kann ich zwar wieder in die Detailansicht und mir auch das Produkt in den Basket legen lassen, aber dannach ist die ID auf die ID der Detailansichtsseite gesetzt, weil der Shop immer $GLOBALS["TSFE"]->id einsetzt ...

Also bekomme ich den Fehler wieder beim Klicken auf Zurück zur Übersicht oder wie auch immer eurer Buttoen/Link heißen mag ...

hubbe ·

@Commodore

Bei mir gibt es keinen einzigen FORM-Tag, bei dem bei action was anderes als "###FORM_URL###" steht. Und das ist auch beim Original-Template so. Evtl. benutzen wir verschiedene Versionen von Typo3 bzw. der Shop-Extension. Ich benutze Typo3 3.5.0 und die Shop-Extension in der Version 1.2.7. Und wie gesagt, hier sind alle FORM-Tags so:
<FORM method="post" action="###FORM_URL###"> bzw. einmal bei der Listenansicht <FORM method="post" action="###FORM_URL###" name="###FORM_NAME###">

Die PIDitemDisplay habe ich im Template bei den Constanten auch gesetzt.

Wenn es einen interessiert, die von mir gemachte Typo3-Seite inkl. Shop findet Ihr unter http://www.linux-fuer-ihren-erfolg.de

Kannst mir ja mal Deine URL nennen, damit man sich das Ganze anschauen kann, falls die Seite schon online ist.

Gruß
hubbe[/url]

Unbekannter Benutzer ·

Hi Hubbe, wir reden über die gleichen Versionen bzgl. T3 und Shop! Bei mir steht also auch nichts anderes im HTML-Template des Shops als bei dir, nur wenn du dir den Quellcode der erzeugen Seiten für Liste und Detail anschaust, findest du im Form-Tag natürlich die URL an die das Ganze gehen soll und hier unterscheidet sich der Shop, da der oben von mir beschriebene Parameter nur in der Listenansicht auftaucht.

Ich habe jetzt also über einen neuen Marker den "fehlenden" Parameter auch in der Detailansicht eingebaut, das ID-Problem verschiebt sich dadurch aber nur ...

Ich schaue mir gleich mal deinen Shop an, hier meine URL: http://web59.s4.typo3server.com/unsereziele_ff.html

Dadurch dass als backPID immer die jeweilige Seite genommen wird, verlagert sich das Problem nur: Durch meine Erweiterung kann ich wieder ganz normal in der Detailansicht ein Produkt in meinen Warenkorb legen (Titel hier: Merken!), dadurch lädt die Detailseite aber neu und als backPID wird dann die ID der Detailseite eingebaut, cklickst du nun auf "Zur Übersicht" erhälst du wieder die eigentliche Fehlermeldung ... am besten, du schaust dir VOR dem "Merken!" und nach demselben die URL von "Zur Übersicht" an, dann kommst du dahinter, was ich gerade aufwendig beschreiben wollte ... 😉

Ich schätze, dass bei Angabe der PIDItemDisplay das Shop-System irgendwie aus den Tritt gerät, ich analysiere gerade die Vorgehensweise ... bei einem anderen Shop habe oder konnte ich auf diese PID und auch auf die PIDBasket verzichten, was zur Folge hat, dass er nach Merken in der Detailansicht wieder auf die Listenansicht zurückspringt ... jetzt kann ich aber nicht auf die PIDItemDisplay verzichten ...

Vielleicht hat ja noch wer anders den rettenden Einfall! Ich suche weiter ...

Unbekannter Benutzer ·

Gut! Du hast die PIDBasket auch gesetzt, daher kommt es nicht mehr zu dem Problem, dass ich habe ... o.O - ich könnte als Ausweg auch direkt auf den BASKET linken, aber irgendwie MUSS es auch anders gehen, da mein Shop auch ohne meinen "Workarround" wunderbar gefunzt hat, nur seit gestern Mittag nicht mehr ...

Unbekannter Benutzer ·

Was soll mir das jetzt sagen ....?

function products_display($theCode)	{
	$formUrl = $this->getLinkUrl($this->conf["PIDbasket"]);
		if ($this->tt_product_single)	{

[...]

} elseif ($theCode=="SINGLE") {		
			$content.="Wrong parameters, GET/POST var 'tt_products' was missing.";
	} else {

?? Steht der Fehler direkt im Shop !?!?! Warum macht Kasper dies ...

Unbekannter Benutzer ·

Durch Zufall habe ich die Detailansicht wieder zum Laufen bekommen, weil ich einfach das action-Feld frei lasse ...
Warum dem so ist, weiß ich auch nicht! Einziger Nachteil: NN4 macht nun Ärger ...

Alles nur Fuscherrei ... #evil#