Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: Doppelklick bei "In den Warenkorb" / "Add to cart" Links und Buttons verhindern

    mcm

    • Mitglied
    • Beiträge: 151
    Gerade bei älteren Kunden wird gern doppelt auf "In den Warenkorb" geklickt und dann gibt's Beschwerden, weil Artikel mehrfach im WK sind.

    Achtung: ich verwende auf Seiten, wo Produkte aufgelistet werden bereits einen Link (mit Button), um sie in den Warenkorb zu legen. Weiß jetzt nicht mehr, woher ich das hab. Die Anleitung bezieht sich auch auf diese Links, kann aber auch nur für die Produktdetailseiten verwendet werden.

    Meine Lösung: Buttons/Links kurzzeitig per JS ausblenden!

    # 1.
    Datei: includes/modules/product_info.php
    2xSuchen:
    Code: PHP  [Auswählen]
    $info_smarty->assign('ADD_CART_BUTTON', xtc_image_submit('button_in_cart.gif', IMAGE_BUTTON_IN_CART));

    Jeweils ersetzten mit:
    Code: PHP  [Auswählen]
    $info_smarty->assign('ADD_CART_BUTTON', xtc_image_submit('button_in_cart.gif', IMAGE_BUTTON_IN_CART, 'class="addcartbtn"'));

    # 2. (nur wenn Ihr bei den Produktlisten-Seiten AddToCart-Links verwendet)
    Datei: includes/classes/product.php
    Suchen: function getBuyNowButton 
    -> hinter öffnendes Link-Tag ( <a  ) ein Leerzeichen und Folgendes setzen: class="addcartlink"

    # 3.
    Datei für eigenes JS:  (z.B.  templates/MyTemplate/javascript/MyJS.js)
    Code: Javascript  [Auswählen]
    /*
     * prevent double-click CART-LINKS/BUTTONS  by mcm
     */

    jQuery().ready(function(){
          $('a.addcartlink, input.addcartbtn').click(function () {
            $(this).css('visibility', 'hidden');
            setTimeout( "jQuery('a.addcartlink, input.addcartbtn').css('visibility', 'visible');",340 );
          });
    });  
     

    Einfacher gehts mit folgendem Code, dann wird aber display: none verwendet, was das Layout verschiebt:

    Code: Javascript  [Auswählen]
    jQuery().ready(function(){
          $('a.addcartlink, input.addcartbtn').click(function () {
            $(this).hide(0).delay(340).show(0);
          });
    });
     

    Kann sicher noch verbessert werden, ich zähl auf Euch...

    Gruß
    - mcm -

    Linkback: https://www.modified-shop.org/forum/index.php?topic=26258.0

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.984
    • Geschlecht:
    Dein Punkt 1 für die product_info ist völlig unnötig.
    Bei Klick auf "In den Warenkorb" wird nur die Stückzahl übergeben die im Input-Feld davor steht (<input name="products_qty" />), egal wie oft und schnell ich da klicke.

    Punkt 2 konnte ich nicht testen da ich in meinem Demoshop bei allen Artikeln Attribute habe und diese deshalb ohnehin nicht sofort in den Korb wandern können.

    Gruß,
    noRiddle

    mcm

    • Mitglied
    • Beiträge: 151
    Bei ner HighSpeed-Internetverbindung und Super-Server geht das, sollte sich aber das Absenden des Formulars beim Submit verzögern, wird es bei Doppelklick mehrfach abgeschickt.

    Habs gerade im Demoshop getestet und drei Artikel auf einmal geschafft!
    (Vielleicht ist mein I-Net einfach zu langsam....)

    - mcm -

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.984
    • Geschlecht:
    Wie auch immer, Punkt 1 ist nicht nötig.
    Aus der product_info heraus schaffst du das doch wohl nicht ?

    Gruß,
    noRiddle

    mcm

    • Mitglied
    • Beiträge: 151
    Hääää???

    jannemann

    • modified Team
    • Beiträge: 6.275
    • Geschlecht:
    Hi,

    wir hatten das Thema schon mal mit dem Button "Kostenpflichtig bestellen". Wenn jemand diesen Button zu schnell bzw. zu oft drückt, wurden ggf. zwei Bestellungen ausgelöst. Jemand hatte dafür ein Javascript Schnipsel zur Verfügung gestellt um das zu verhindern.

    Schöne Grüße,
    Jan

    mcm

    • Mitglied
    • Beiträge: 151
    Wie auch immer, Punkt 1 ist nicht nötig.
    Aus der product_info heraus schaffst du das doch wohl nicht ?

    Um mein häää noch etwas zu erleutern:
    Ich schrieb ja, dass auch im Demoshop (der von modified-shop.org) das Problem teilweise auftritt, dass man beim doppelt klicken auf "In den Warenkorb" mehrere Artikel wählt.

    Und im Demoshop ist das ja nur von den Produkt-Detailseiten aus möglich.
    Somit ist also doch die product_info.php betroffen. Und mein o.g. Ansatz bringt hier Abhilfe.

    Ich verstehe also Deinen Einwand nicht ganz - noRiddle!?

    @Jan: Beim Bestellabschluss ist das natürlich ganz fatal. Dort sollte man sich ja nun nicht auf eine JS-Lösung verlassen.
    Hab den Beitrag gefunden...
    Es wird nicht ganz deutlich, ob das Problem noch besteht.

    Der Ansatz, das Input- bzw. Link-Bild auszublenden, wodurch ein anderes Bild nicht anklickbar im Hintergrund sichtbar wird, ist gut.
    Allerdings wird ein zusätzliches Div benötigt, und dann hätte ich mehrere Template-Dateien anpassen müssen - Faulheit siegt...
    Man könnte das Input-Feld auch gleich per JS durch ein Bild ersetzen (  $(this).html('<img....>')  ), um nicht an die Template-Dateien zu müssen, aber dann kann man es nicht sprachspezifisch anlegen - oder?

    Gruß
    - mcm -

    4 Antworten
    9153 Aufrufe
    20. Oktober 2012, 06:06:22 von Simon
    3 Antworten
    4142 Aufrufe
    28. November 2013, 12:14:45 von Kawabiker
    6 Antworten
    5023 Aufrufe
    12. März 2018, 14:32:49 von andy.kegel
               
    anything