Zum Inhalt springen

Addieren der Artikelmenge unterbinden

Erstellt am 15. September 2005 · 10 Antworten · letzte Antwort am 16. September 2005

Tags: Frage

kurtzman ·

ich stehe vor einem kleinen Problem:

wenn ich einen Artikel 1x in den Warenkorb lege und später den gleichen wieder z.B. 4x, werden diese 2 Artikel zusammengezählt und befinden sich insgesamt 5 Artikel im Warenkorb und zwar als ein Datensatz statt 2 Datensätze.

Das ist natürlich in den meisten oder allen Fällen erwünscht aber trotzdem ist das nun in meinem Fall total falsch...

gibt es da zufällig einen Parameter, der das regelt? im PHP-Code würde ich ungern arbeiten, schon allein wegen der Updatefähigkeit.

ich verwende tt_products v2.2.4

Flink ·
kurtzman schrieb

wenn ich einen Artikel 1x in den Warenkorb lege und später den gleichen wieder z.B. 4x, werden diese 2 Artikel zusammengezählt und befinden sich insgesamt 5 Artikel im Warenkorb und zwar als ein Datensatz statt 2 Datensätze.

Das ist natürlich in den meisten oder allen Fällen erwünscht aber trotzdem ist das nun in meinem Fall total falsch...

Hast du denn verschiedene Varianten für den Artikel eingegeben?

kurtzman schrieb

ich verwende tt_products v2.2.4

Probiere es mit tt_products 2.2.7 aus.

kurtzman ·

auf 2.2.7 updaten möchte ich nicht, ich hab den shop ursprünglich nicht in dieses typo3 projekt implementiert.

artikelvarianten gibt es keine aber es wäre dennoch sehr wichtig - überhaupt im moment entscheidend - dass das addieren aufhört.

Flink ·
kurtzman schrieb

es wäre dennoch sehr wichtig - überhaupt im moment entscheidend - dass das addieren aufhört.

Vergleiche doch einmal die

function initBasket($basket, $updateMode)

mit jener im CVS.

Version-2-2-3

vor allem die Zeilen mit den Inhalten "$this->basketExt[$uid][$extVars]" und "$count;"

Gibt es hier Unterschiede?

kurtzman ·

nur ab dem Punkt:

/* Added Els: getting the field uid form fe_users and introducing the field feusers_uid into sys_products_orders */

das sollte aber nichts damit zu tun haben...

ich hab mal selber einen aufwendigen PHP-Shop geschrieben und kenn die Problematik. Leider ist es nicht so einfach sich in dem Code zurechtzufinden... wo finde ich die Funktion, die Artikel in den Warenkorb legt? die werden ja anscheinend in der Tabelle "fe_session_data" gespeichert oder?

Flink ·

Füge einmal

<input type="hidden" name="mode_update" value="1">

vor

<input type="Submit" name="order" value="put in basket" ...

im Template ein.

kurtzman ·

läuft damit leider auch nicht.

der passt sogar bei der produktanzeige schon das Mengenfeld mit der im Warenkorb befindlichen Menge an. Das muss evtl. schon gruppiert in der Datenbank liegen...

an welcher stelle werden die produkte in den warenkorb gelegt? passiert das vielleicht gar nicht in der tt_products sondern in dieser fe_user? vielleicht gibts den parameter!?

Flink ·
kurtzman schrieb

an welcher stelle werden die produkte in den warenkorb gelegt?

Wie vorhin geschrieben, in der Funktion

function initBasket
kurtzman ·

wenn ich mir mal was in den kopf setz... :-)

ich hätte jetzt eine möglichkeit gefunden, dass zu machen:

version 2.2.4

1. kann es sein, dass initBasket 2x augerufen wird? wenn ja, warum!?

2. meine artikel haben keine farben etc. man könnte also folgendes machen: wenn sich dieser artikel schon im warenkorb befindet müsste einfach in der dateiliste für z.b. size ein anderer wert als schon im warenkorb übergeben werden. dann wird der artikel extra aufgelistet, weil ja praktisch eine variation vorliegt...
anders geht das wohl nicht, da ein array erstellt wird, dass als schüssel die artikelid (uid) besitzt. da lassen sich natürlich nicht einfach 2 elemente mit gleichen schlüssel anlegen - ist ja klar :-)

ich teste morgen mal ob sich meine idee umsetzen lässt. blöd nur, dass anscheinend initBasket doppelt aufgerufen wird... sehr merkwürdig!!

kurtzman ·

also ich hab jetzt tatsächlich geschafft, dass mehrere Datensätze entstehen!

ca. 5 Zeilen Code in der php-class und 2 zeilen im Template. Man mag es kaum glauben, dass so wenig Code das riesen Problem löst :-)

Bei Interesse kann ich es posten aber ich müsste es vorher noch komplett überprüfen.