Marktplatz - Eine große Auswahl an neuen und hilfreichen Modulen sowie modernen Templates für die modified eCommerce Shopsoftware
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: checkout_shipping.php überspringen

    downset

    • Mitglied
    • Beiträge: 177
    checkout_shipping.php überspringen
    am: 15. Februar 2020, 00:21:03
    Da es bei mir nur kostenfreien  Versand gibt würde ich die checkout_shipping.php gerne überspringen. In der Aktuellen Version (2er) geht da leider anscheinend nicht so wie zuvor.

    Hat jemand einen Plan, wie ich den Link zum Checkout ändern muss?

    Liebe Grüße

    Jens

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

    Tante Uschi

    • Fördermitglied
    • Beiträge: 164
    Re: checkout_shipping.php überspringen
    Antwort #1 am: 15. Februar 2020, 09:33:15
    Auf die Schnelle:

    checkout_shipping.php

    Suche:

    Code: PHP  [Auswählen]
    // method if more than one module is now enabled
    if ((!isset($_SESSION['shipping']) && CHECK_CHEAPEST_SHIPPING_MODUL == 'true') || (isset($_SESSION['shipping']) && ($_SESSION['shipping'] == false) && (xtc_count_shipping_modules() > 1))) {
            $_SESSION['shipping'] = $shipping_modules->cheapest();
    }

    Füge danach ein:

    Code: PHP  [Auswählen]
    // Beginn: Umleitung FILENAME_CHECKOUT_SHIPPING
    if (xtc_count_shipping_modules() == 1){
    $_SESSION['shipping'] = $shipping_modules->cheapest();
                    xtc_redirect(xtc_href_link(FILENAME_CHECKOUT_CONFIRMATION, '', 'SSL'));
    }
    // Ende: Umleitung FILENAME_CHECKOUT_SHIPPING

    Habe grade nicht die Zeit, wenn es nicht gehen sollte, dann suche ich heut Nachmittag nochmal richtig.

    PS.: FILENAME_CHECKOUT_CONFIRMATION musst Du glaub ich in das ändern wo Du hin willst. Wir nutzen weder Shipping noch Payment.

    Gruß

    downset

    • Mitglied
    • Beiträge: 177
    Re: checkout_shipping.php überspringen
    Antwort #2 am: 19. Februar 2020, 22:48:42
    Klappt perfekt. Superlieben Dank!

    Tante Uschi

    • Fördermitglied
    • Beiträge: 164
    Re: checkout_shipping.php überspringen
    Antwort #3 am: 20. Februar 2020, 00:27:29
    Freut mich, Danke für die Rückmeldung und das Thema als abgeschlossen zu markieren. :)

    downset

    • Mitglied
    • Beiträge: 177
    Re: checkout_shipping.php überspringen
    Antwort #4 am: 21. Februar 2020, 13:37:09
    Gerade doch ein Problem entdeckt.

    Funktioniert sporadisch manchmal nicht. Hmmmm.....

    Tante Uschi

    • Fördermitglied
    • Beiträge: 164
    Re: checkout_shipping.php überspringen
    Antwort #5 am: 21. Februar 2020, 14:42:47
    Bei uns funktioniert es seit Jahren problemlos, kann es sein das ihr bei einigen Produkten mehrere Versandmodule aktiviert habt, dann muss das so aussehen:

    Code: PHP  [Auswählen]
    if (xtc_count_shipping_modules() >= 1

    Gruß

    downset

    • Mitglied
    • Beiträge: 177
    Re: checkout_shipping.php überspringen
    Antwort #6 am: 21. Februar 2020, 14:46:10
    Hallo!

    Lag zwar an etwas anderem  :tomato:.... Vergessen etwas auszukommentieren...

    Aber vielleicht interessant für jemanden, der tatsächlich den Zusatz von Dir braucht. Danke!

    downset

    • Mitglied
    • Beiträge: 177
    Re: checkout_shipping.php überspringen
    Antwort #7 am: 21. Februar 2020, 17:22:24
    Doch ein Problem.
    Im Schritt vorher habe ich als Buttonziel zwar die checkout_confirmation.php als Linkziel. Betätige ich jedoch den Button lande ich in der checkout_payment.php?
    error_message=%2A+Bitte+w%26auml%3Bhlen+Sie+eine+Zahlungsweise+f%26uuml%3Br+Ihre+Bestellung.

    Interssanterweise ist allerdings sogar das Modul Rechnung vorausgewählt. Sollte also gar keinen Fehler produzieren...

    Mann bin ich entnervt....

    Tante Uschi

    • Fördermitglied
    • Beiträge: 164
    Re: checkout_shipping.php überspringen
    Antwort #8 am: 21. Februar 2020, 17:32:47
    Ich bin grade nicht am Hauptrechner, kann mir das also erst später ansehen, aber wenn Du die checkout_confirmation.php anspringst, dann sollte im Payment Barzahlung angegeben sein. Also im Admin die Barzahlung als einziges Modul stehen, sonst springt er von der checkout_confirmation.php wieder zurück zur Payment-Seite und genau das macht er bei Dir.

    Edit:  also beim Sprung über die shipping sorgt diese Zeile dafür:

    $_SESSION['shipping'] = $shipping_modules->cheapest();

    dass das billigste Versandmodul mit genommen wird in der Session und genau das muss in der Payment auch nach diesem Muster geschehen, sonst landest Du in der confirmation, aber in der Session fehlt die Zahlungsweise und deswegen schickt er Dich zurück, nur ist durch den jetzt erst stattfindenden Aufruf der payment die Zahlungsweise vorausgewählt und würde bei weiter diese auch zur confirmation in der Session mitnehmen, umgehen kann man dies eben mit der Barzahlung. Deswegen ist Rechnung angeklickt und trotzdem eigentlich nicht gewählt.

    downset

    • Mitglied
    • Beiträge: 177
    Re: checkout_shipping.php überspringen
    Antwort #9 am: 21. Februar 2020, 17:42:21
    Habe es gelöst. In der checkout_confirmation.php einfach folgendes auskommentiert:
    if (!isset($_SESSION['payment'])) {
      xtc_redirect(xtc_href_link(FILENAME_CHECKOUT_PAYMENT, 'error_message=' . urlencode(ERROR_NO_PAYMENT_MODULE_SELECTED), 'SSL'));
    }

    Das sorgt dafür, dass man trotz Fehler nicht umgeleitet wird. Ist zwar ein wenig dirty, da ich nicht weiß, was den Fehler produziert. Momentan ist mir das aber erstmal egal. Hoch die Hände Wochenende.....!

    Tante Uschi

    • Fördermitglied
    • Beiträge: 164
    Re: checkout_shipping.php überspringen
    Antwort #10 am: 21. Februar 2020, 17:45:31
    Zur Erklärung schau in meiner letzte Antwort das Edit an, schön das es geht und schönes Wochenende, solltest Du allerdings in die confirmation springen, dann muss da noch ne Umleitung rein, falls der Kunde den Zurückbutton klickt, probiers mal zurück zu gehen, aber die Umleitung habe ich auch da, falls es nicht geht. ;)

    Tante Uschi

    • Fördermitglied
    • Beiträge: 164
    Re: checkout_shipping.php überspringen
    Antwort #11 am: 21. Februar 2020, 19:46:02
    Habe noch einmal am Hauptrechner nachgeschaut, Dein auskommentieren der Payment-Session ist richtig und umgeht die Payment unabhängig davon welches Zahlungsmodul gewählt ist, allerdings ist in diesem Fall auch keine Zahlungsmethode in der Session, was bedeutet, dass ab da auch keine Zahlungsmethode mehr in der Bestellung verfügbar ist.

    Sollte also passen.

    Ich versuche das jetzt nochmal komplett zu machen für 2.0.4.2 um dem Titel des Themas gerecht zu werden und späteren Suchenden ein Gesamtbild zu geben.

    Datei: checkout_shipping.php

    Suche:

    Code: PHP  [Auswählen]
    if ((!isset($_SESSION['shipping']) && CHECK_CHEAPEST_SHIPPING_MODUL == 'true') || (isset($_SESSION['shipping']) && ($_SESSION['shipping'] == false) && (xtc_count_shipping_modules() > 1))) {
            $_SESSION['shipping'] = $shipping_modules->cheapest();
    }

    Füge danach ein:

    Code: PHP  [Auswählen]
    // Beginn: Umleitung FILENAME_CHECKOUT_SHIPPING
    if (xtc_count_shipping_modules() == 1){  // Faster Checkout SE
    $_SESSION['shipping'] = $shipping_modules->cheapest();
                    xtc_redirect(xtc_href_link(FILENAME_CHECKOUT_CONFIRMATION, '', 'SSL'));
    }
    // Ende: Umleitung FILENAME_CHECKOUT_SHIPPING

    Da wir ja die Session umgehen könnte auch jeder in die checkout_confirmation.php springen indem er  diese direkt ansteuert, deshalb muß noch folgendes in die checkout_confirmation.php:

    Datei: checkout_confirmation.php

    Suche (ganz oben) :

    Code: PHP  [Auswählen]
    include ('includes/application_top.php');

    füge danach ein:

    Code: PHP  [Auswählen]
    // Beginn: Wenn Warenkorb leer dann zurück zur shopping_card
    if ($_SESSION['cart']->count_contents() < 1)
            xtc_redirect(xtc_href_link(FILENAME_SHOPPING_CART));
           
    // Ende: Beginn: Wenn Warenkorb leer dann zurück zur shopping_card
    // Beginn: Ist der User nicht angemeldet dann schicke ihn zurück zur create_quest_account

    if (!isset ($_SESSION['customer_id']))
            xtc_redirect(xtc_href_link(FILENAME_CREATE_QUEST_ACCOUNT, '', 'SSL'));
    // Ende: Ist der User nicht angemeldet dann schicke ihn zurück zur create_quest_account

    Anmerkung: FILENAME_CREATE_QUEST_ACCOUNT gegebenenfalls auf die create_account setzen.

    Suche:

    Code: PHP  [Auswählen]
    // GV Code line changed
    if ((is_array($payment_modules->modules)

    Ersetze in diesem Block die Zeile:

    Code: PHP  [Auswählen]
    xtc_redirect(xtc_href_link(FILENAME_CHECKOUT_PAYMENT, 'error_message=' . urlencode(ERROR_NO_PAYMENT_MODULE_SELECTED), 'SSL'));

    mit folgendem:

    Code: PHP  [Auswählen]
     // Beginn: Umleitung FILENAME_CHECKOUT_PAYMENT wenn checkout_confirmation neu geladen wird
     // xtc_redirect(xtc_href_link(FILENAME_CHECKOUT_PAYMENT, 'error_message=' . urlencode(ERROR_NO_PAYMENT_MODULE_SELECTED), 'SSL'));
     // Ende: Umleitung FILENAME_CHECKOUT_PAYMENT wenn checkout_confirmation neu geladen wird

    Das sollte eigentlich funktionieren, zumindest wenn ich nichts übersehen habe.

    Dieser Teil ist bei mir ebenfalls auskommentiert, jedoch kann ich nicht garantieren, dass dieser zu der Umleitung gehört, das weiß ich gerade nicht und schreibe ihn deshalb nur mit hier hin, falls er dazu gehören sollte, es ist schlicht zu lange her um mich daran zu erinnern, außerdem fehlt mir hier die genaue Bezeichnung:

    Code: PHP  [Auswählen]
    //if ($_SESSION['sendto'] != false) {
     // if ($order->info['shipping_method']) {
    //    $smarty->assign('SHIPPING_METHOD', $order->info['shipping_method']);
     //   $smarty->assign('SHIPPING_EDIT', xtc_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL'));
    //  }
    //}

    So das sollte es eigentlich gewesen sein.

    Gruß

    downset

    • Mitglied
    • Beiträge: 177
    Re: checkout_shipping.php überspringen
    Antwort #12 am: 22. Februar 2020, 16:19:47
    Noch einmal vielen Dank für Deine Geduld und Mühe!

     :-)

    Tante Uschi

    • Fördermitglied
    • Beiträge: 164
    Re: checkout_shipping.php überspringen
    Antwort #13 am: 22. Februar 2020, 18:20:53
    :cheers:

    atmiral

    • Neu im Forum
    • Beiträge: 16
    Re: checkout_shipping.php überspringen
    Antwort #14 am: 22. Februar 2020, 23:05:34
    Hallo Zusammen.

    habe vor Kurzem für die modified Version 2.0.5.0 eine Variante programmiert, die unabhängig von der Versand-Art funktioniert.
    Die Änderung funktioniert so: wenn es nur eine Versandart gültig ist, dann wird diese "automatisch ausgewählt" und User wird direkt zu der checkout_payment.php weitergeleitet.

    in checkout_shipping.php gehe zu Zeile #118 und ersetzte den Abschnitt
    Code: PHP  [Auswählen]
    //express checkout
    if (defined('MODULE_CHECKOUT_EXPRESS_STATUS') && MODULE_CHECKOUT_EXPRESS_STATUS == 'true') {
      if (isset($_GET['express']) && $_GET['express'] == 'on') {
        if ($express['checkout_shipping'] != '') {
          if ($free_shipping === false && $express['checkout_shipping'] == 'free_free') {
            unset($express['checkout_shipping']);
          } elseif ($free_shipping === false && $express['checkout_shipping'] == 'cheapest_cheapest') {
            // get all available shipping quotes
            $quotes = $shipping_modules->quote();
            $cheapest = $shipping_modules->cheapest();
            $express['checkout_shipping'] = $cheapest['id'];
          }
          $_POST['action'] = 'process';
          $_POST['shipping'] = (($free_shipping === true) ? 'free_free' : $express['checkout_shipping']);
        }
      }
    }

    // process the selected shipping method
    if (isset($_POST['action']) && ($_POST['action'] == 'process')) {
      $redirect_link = xtc_href_link(FILENAME_CHECKOUT_PAYMENT, xtc_get_all_get_params(), 'SSL');
      require(DIR_WS_INCLUDES.'shipping_action.php');
    }

    // get all available shipping quotes
    $quotes = $shipping_modules->quote();
     

    mit
    Code: PHP  [Auswählen]
    // get all available shipping quotes
    $quotes = $shipping_modules->quote();

    // if only one shipping set use it as selected shipping
    if (is_array($quotes) && count($quotes) == 1 && !isset($_POST['action'])) {
        if (isset($quotes[0]['id'], $quotes[0]['methods'][0]['id']) && $quotes[0]['id'] && $quotes[0]['methods'][0]['id']) {
            $_POST = [
                'action' => 'process',
                'shipping' => $quotes[0]['id'].'_'.$quotes[0]['methods'][0]['id']
            ];
        }
    }

    //express checkout
    if (defined('MODULE_CHECKOUT_EXPRESS_STATUS') && MODULE_CHECKOUT_EXPRESS_STATUS == 'true') {
      if (isset($_GET['express']) && $_GET['express'] == 'on') {
        if ($express['checkout_shipping'] != '') {
          if ($free_shipping === false && $express['checkout_shipping'] == 'free_free') {
            unset($express['checkout_shipping']);
          } elseif ($free_shipping === false && $express['checkout_shipping'] == 'cheapest_cheapest') {
            // get all available shipping quotes
            //$quotes = $shipping_modules->quote();
            $cheapest = $shipping_modules->cheapest();
            $express['checkout_shipping'] = $cheapest['id'];
          }
          $_POST['action'] = 'process';
          $_POST['shipping'] = (($free_shipping === true) ? 'free_free' : $express['checkout_shipping']);
        }
      }
    }

    // process the selected shipping method
    if (isset($_POST['action']) && ($_POST['action'] == 'process')) {
      $redirect_link = xtc_href_link(FILENAME_CHECKOUT_PAYMENT, xtc_get_all_get_params(), 'SSL');
      require(DIR_WS_INCLUDES.'shipping_action.php');
    }
     

    Hoffe es hilft

    Viele Grüße!
    19 Antworten
    7817 Aufrufe
    04. Juli 2013, 10:06:29 von psychoelvis64
    3 Antworten
    3176 Aufrufe
    28. August 2011, 12:34:16 von Matt
    3 Antworten
    2769 Aufrufe
    23. Juni 2012, 20:25:55 von hardstylemaster
    0 Antworten
    816 Aufrufe
    23. Januar 2017, 10:19:23 von Spacemanager