Franz Holzinger

Verse of the day

Weiter, liebe Brüder, was wahrhaftig ist, was ehrbar, was gerecht, was keusch, was lieblich, was wohllautet, ist etwa eine Tugend, ist etwa ein Lob, dem denket nach!
Philipper 4:8

© Bible Gateway's Verse of the Day


autor  
28-01-15 20:56:57 "Produkt erfolgreich zum Warenkorb hinzugefügt"
Chris
Hallo Franz,

wenn ein Kunde aus der SINGLE Ansicht ein Produkt in den Warenkorb legt, möchte ich ihm gerne eine Erfolgsmeldung ausgeben. "Produkte wurde dem Warenkorb hinzugefügt" o.ä.
"clickIntoBasket" ist deaktiviert, ich möchte die Erfolgsmeldung also im SINGLE Template ausgeben.

Gibt es das bereits? Falls nicht, kannst du mir einen Tipp geben in welcher Klasse ich am Besten den Marker ersetze (Wo wird das Hinzufügen eines Produkts abgearbeitet)?

Danke!

Vg,
Chris

29-01-15 07:12:29 Lösung
Franz Holzinger
Grundsätzlich könnte man ein JavaScript an den Button 'in den Warenkorb' dranhängen, welches für die gewünschte Anzeige sorgt. Allerdings wäre dabei nicht gewährleistet, dass sich das Produkt auch tatsächlich im Warenkorb befindet. Das müsste extra über ein Ajax abgefragt werden.Und durch das anschließende Neuladen der Seite wird das obsolet.
D.h. der gesamte Ablauf "in den Warenkorb" sollte eigentlich auf Ajax umgestellt werden.
Nach dem Neuladen der Seite weiß tt_products aber noch, ob das Produkt in den Warenkorb gelegt worden ist. Es gibt für den Fall, bei dem es keine Varianten gibt, die Möglichkeit, dass die Anzahl eines Produktes, die im Warenkorb liegt, im Eingabefeld stehen bleibt. Ev. Änderungen müssten in der Datei view/class.tx_ttproducts_basketitem_view.php getätigt werden.
Vielleicht sollten für diesen Fall neue Subpart Marker eingeführt werden.
29-01-15 13:37:53 Danke!
Chris
Hallo Franz,

also Javascript und AJAX wollte ich vermeiden. Ich hab es jetzt folgendermaßen gelöst:

In der tx_ttproducts_basket.php habe ich ein Feld und eine Funktion hinzugefügt:

//Set if a product is added or quantity has changed in the basket
private $hasQuantityChanged = false;

public function hasQuantityChanged() {
return $this->hasQuantityChanged;
}


hasQuantityChanged wird in der addItem() Funktion gesetzt:

if ( $count >= 0 && $bStoreBasket ) {
$newcount = $count;
//Set Marker for "Product added successfully to cart"
if ( $oldcount != $newcount ) {
$this->hasQuantityChanged = true;
}
.....

Da ich den Marker nur in der Single View brauche, habe ich noch dieclass.tx_ttproducts_single_view.php geändert:

------------------------------------
else {
$subpartArray['###LINK_NEXT_SINGLE###'] = '';
}

//Set Marker if quantity has changeed
if ( $basketObj->hasQuantityChanged() ) {
$markerArray['###ITEM_ADDED_MARKER###'] = tx_div2007_alpha5::getLL_fh002( $langObj, 'basket_item_added' );
} else {
$markerArray['###ITEM_ADDED_MARKER###'] = "";
}
---------------------------------------------


Ich denke da gibts schönere Lösungen, aber es funktioniert. :)

Vg,
Chris






< BACK TO FORUM