JTL- Shop 4.6.12, PayPal-Plugin 1.10, EVO mit Child-Template
Wir richten gerade in einem neuen Shop PayPal ein.
PP-Plus funktioniert (Sandbox) wie erwartet; Express spielt uns aber einen bösen Streich:
Auf der Artikel-Detailseite löst ein Klick auf den Express-Button die Aktion "in den Warenkorb legen" aus, statt zu PP weiterzuleiten!
Die Einbindung erfolgt als <button type="sumbit">, offenbar führt das zu einem Konflikt.
Zwar hat der Button einen value='2' und nicht value='In den Warenkorb', und der name ist natürlich auch anders (geprüft mit Inspektor) , aber es wird trotzdem die Warenkorbfunktion ausgelöst.
Hatte das Phänomen schon mal jemand?
##################################################
EDIT: Vermutliche Lösung gefunden!
Der Express-Button scheint nicht richtig funktionieren, weil wir auf der Detailseite den Hack für den Popup-Warenkorb (wie auf Kategorieseite) verwenden.
Verantwortlich für das PopUp ist (neben einer kleinen Änderung an der jtl.basket.js, die auch bestehen bleiben muss!) das hinzugefügte Attribut data-toggle="basket-add" in <form id="buy_form">. Das Attribut muss komplett entfernt werden, bevor der Submit ausgelöst wird.
Da das mit dem vom Plugin eingeblendeten Button natürlich nicht geht, haben wir den Button 'nachgebaut' und fügen ihn manuell mitsamt kleinem Skript unter den Warenkorb ein. Im Plugin muss die Einstellung für "Button auf Artikelseite anzeigen" dann natürlich auf 'nein' stehen.
Wer's auch nachbauen will, hier der Code:
Den Code für den Button haben wir per Inspektor aus dem Browser geklaut. Er hat eine ID bekommen, und der type wurde von submit in button geändert. Es soll ja gerade kein Submit ausgeführt werden, sondern unser Skript.
Der type muss nach dem Löschen des Attributs aber wieder auf submit geändert werden, weil der value="2" sonst im $_Post nicht gefunden wird. Neckischer Weise löst die Änderung des Types (bei uns) dann auch sofort den Submit aus; heißt wohl, der click()-Event ist noch gültig.
Beim IMG im Button muss evtl. Eure Versionsnummer .../version/110/... angepasst werden.
Wie beim Lotto: Alle Angaben ohne Gewähr
Wir richten gerade in einem neuen Shop PayPal ein.
PP-Plus funktioniert (Sandbox) wie erwartet; Express spielt uns aber einen bösen Streich:
Auf der Artikel-Detailseite löst ein Klick auf den Express-Button die Aktion "in den Warenkorb legen" aus, statt zu PP weiterzuleiten!
Die Einbindung erfolgt als <button type="sumbit">, offenbar führt das zu einem Konflikt.
Zwar hat der Button einen value='2' und nicht value='In den Warenkorb', und der name ist natürlich auch anders (geprüft mit Inspektor) , aber es wird trotzdem die Warenkorbfunktion ausgelöst.
Hatte das Phänomen schon mal jemand?
##################################################
EDIT: Vermutliche Lösung gefunden!
Der Express-Button scheint nicht richtig funktionieren, weil wir auf der Detailseite den Hack für den Popup-Warenkorb (wie auf Kategorieseite) verwenden.
Verantwortlich für das PopUp ist (neben einer kleinen Änderung an der jtl.basket.js, die auch bestehen bleiben muss!) das hinzugefügte Attribut data-toggle="basket-add" in <form id="buy_form">. Das Attribut muss komplett entfernt werden, bevor der Submit ausgelöst wird.
Da das mit dem vom Plugin eingeblendeten Button natürlich nicht geht, haben wir den Button 'nachgebaut' und fügen ihn manuell mitsamt kleinem Skript unter den Warenkorb ein. Im Plugin muss die Einstellung für "Button auf Artikelseite anzeigen" dann natürlich auf 'nein' stehen.
Wer's auch nachbauen will, hier der Code:
Code:
<div>
<button id="pp-Express" name="jtl_paypal_redirect" type="button" value="2" class="paypalexpress btn-ppe-article"><img src="{$ShopURL}/includes/plugins/jtl_paypal/version/110/frontend/images/buttons/de/checkout-logo-medium-alt-de.png" alt="PayPal-Express"></button>
{literal}
<script>
$(document).ready( function() {
$('#pp-Express').click(function(){
$('#buy_form').removeAttr('data-toggle'); // .attr('data-toggle','') reicht nicht!
$(this).prop('type','submit');
// $('#buy_form').submit(); // ueberfluessig; click() ist noch gueltig. Falls nicht, "//" vorne entfernen.
});
});
</script>
{/literal}
</div>
Den Code für den Button haben wir per Inspektor aus dem Browser geklaut. Er hat eine ID bekommen, und der type wurde von submit in button geändert. Es soll ja gerade kein Submit ausgeführt werden, sondern unser Skript.
Der type muss nach dem Löschen des Attributs aber wieder auf submit geändert werden, weil der value="2" sonst im $_Post nicht gefunden wird. Neckischer Weise löst die Änderung des Types (bei uns) dann auch sofort den Submit aus; heißt wohl, der click()-Event ist noch gültig.
Beim IMG im Button muss evtl. Eure Versionsnummer .../version/110/... angepasst werden.
Wie beim Lotto: Alle Angaben ohne Gewähr
Zuletzt bearbeitet: