Weiterleitung auf Sartseite nach absenden des Gast Formulars

Ich habe die Möglichkeit eingebaut, dass man seine Daten als Gast-Besteller eingeben und speichern kann ohne vorher
einen Artikel in den Warenkorb gelegt zu haben. Dazu verlinke ich auf die
https://www.shop.de/index.php?user&cl=user&option=1

Nach dem klicken auf den submitbutton werde ich auf
https://www.shop.de/startseite/ weitergeleitet ohne redirect in der URL. Das macht oxid, da ja kein Artikel im Warenkorb ist und er somit nicht auf
die Payment-Seite kann. Auch müssen erst die Daten in die Datenbank eingetragen wertden.
Wenn ich die https://www.shop.de/index.php?user&cl=user&option=1 erneut aufrufe ist alles eingetragen und bei erneuten
klicken auf den submitbutton werden alle Änderungen auch gespeichert aber ich bleibe auf der Seite ohne Weiterleitung auf die Startseite.
Es wird dann https://www.shop.de/index.php? angezeigt.

Betroffen sind die Dateien:

user_checkout_change

[{oxscript include="js/widgets/oxinputvalidator.js" priority=10}]
[{oxscript add="$('form.js-oxValidate').oxInputValidator();"}]
[{block name="user_checkout_change"}]
<form class="js-oxValidate" action="[{$oViewConf->getSelfLink()}]" name="order" method="post">
  [{block name="user_checkout_change_form"}]
  [{assign var="aErrors" value=$oView->getFieldValidationErrors()}]
  [{$oViewConf->getHiddenSid()}]
  [{$oViewConf->getNavFormParams()}]
  <input type="hidden" name="cl" value="user">
  <input type="hidden" name="option" value="[{$oView->getLoginOption()}]">
  [{if $oxcmp_basket->getProductsCount() == 0}]           
    <input type="hidden" name="fnc" value="changeuser_testvalues">
  [{else}]    
    <input type="hidden" name="fnc" value="changeuser">
  [{/if}] 
    <input type="hidden" name="lgn_cook" value="0">
    <input type="hidden" name="blshowshipaddress" value="1">
    [{block name="user_checkout_billing"}]
    [{block name="user_checkout_billing_head"}]
      <h3 class="blockHead">
      [{oxmultilang ident="BILLING_ADDRESS"}]
                               
<button id="userNextStepBottom" class="submitButton largeButton nextStep" name="userform" type="submit">speichern</button>

user_checkout_noregistration

[{oxscript include="js/widgets/oxinputvalidator.js" priority=10}]
[{oxscript add="$('form.js-oxValidate').oxInputValidator();"}]
[{block name="user_checkout_noregistration"}]
    <form class="js-oxValidate" action="[{$oViewConf->getSelfLink()}]" name="order" method="post">
        [{block name="user_checkout_noregistration_form"}]
            [{assign var="aErrors" value=$oView->getFieldValidationErrors()}]
            [{$oViewConf->getHiddenSid()}]
            [{$oViewConf->getNavFormParams()}]
            <input type="hidden" name="cl" value="user">
            <input type="hidden" name="option" value="1">
            [{if !$oxcmp_user->oxuser__oxpassword->value}]
               
      <input type="hidden" name="fnc" value="createuser">
           
 [{else}]
                <input type="hidden" name="fnc" value="changeuser">
                <input type="hidden" name="lgn_cook" value="0">
            [{/if}]
            <input type="hidden" id="reloadAddress" name="reloadaddress" value="">
            <input type="hidden" name="blshowshipaddress" value="1">



<button id="userNextStepBottom" class="submitButton largeButton nextStep" name="userform" type="submit">speichern</button>

Hat einer ne Idee wie ich gleich beim ersten mal klicken des Submittbutton , also auf speichern auf er Seite bleibe und nicht auf die Sartseite umgeleitet werde?

Guck mal Deine URL genau an https://www.shop.de/index.php?user&cl=user&option=1

das ist das user& überflüssig…

https://www.shop.de/index.php?cl=user&option=1

wäre aus meiner Sicht korrekt.

musst Dir im einem Hidden Input Field die aktuelle Seite merken und beim Redirect dann entsprechend auf die gemerkte Seite weiterleiten bei der Verarbeitung.

Ja stimmt
https://www.shop.de/index.php?cl=user&option=1
reicht natürlich auch. Habs grade probiert. Ist das gleiche. Weiterleitung auf die
https://www.shop.de/startseite/ beim ersten mal absenden.

ich hab den Verdacht, dass das im PHP gelöst werden muss mit “returne”; oder so
weis aber nicht in welcher Datei diese Weiterleitung erzeugt wird.
in der oxcmp_user.php hab ich nicht gefunden.

Achso der Shop ist noch 4.10 Azure.

Naja, Du befindest Dich im Checkout. Dann musst den Redirect anpassen. Du könntest das ganze auch zu cl=register umleiten.

1 Like

Der Shop braucht dringend ein Update.

Genau über PHP. Wenn Du Dir es von Gast-Bestellung Form Template abguckst (was schon gemacht hast) https://github.com/OXID-eSales/oxideshop_ce/blob/v4.10.8/source/application/views/azure/tpl/form/user_checkout_noregistration.tpl#L12 dann siehst es wird in der Regel die Funktion createuser() aufgerufen.

Die createuser() Funktion findest in der User Component und diese liefert wie Du bereits vermutet mit return die Seite zurück auf die weitergeleitet werden soll https://github.com/OXID-eSales/oxideshop_ce/blob/v4.10.8/source/application/components/oxcmp_user.php#L546

Also musst Du über ein Modul die User Component überladen und entsprechend modifizieren, dass in Deinem Fall auf die vorherige Seite geleitet wird.

Du könntest eigenes Input Hidden Feld hinterlegen und in der Überladung abfragen ob dies befüllt, wenn ja leitest auf den entsprechenden gemerkten Wert weiter.

Aber dort musst Dir genau überlegen was Du tust, weil im Prinzip kannst nur über einen anonymen User gehen ohne Dir E-Mail Adresse oder ähnliches zu merken. Wenn Dir das über Cookie merkst, dann brauchst auch noch Hinweis auf Datenschutzerklärung (dort muss Erklärung zu finden sein) und wenn der Cookie noch im Browser des Gastbestellers vorhanden und er nach x Tagen wieder auf Deinen Shop kommt dann ist Warenkorb vorgefüllt.

Das heißt die Implementierung wird umfangreicher in der Individualisierung. Da bei jedem Seitenrequest den Cookie prüfen müsstest ob es ein alter anonymen Warenkorb vorliegt etc.

Daher wäre es logischer wenn Du einfach die Session Dauer von einem nicht eingeloggten User erhöhst, dies wäre der geringere Aufwand.

Oder von der Strategie das für potenzielle Kunden die sich registrieren ein Bonus anlegst wie z.B. kostenlose Lieferung oder 10,- Euro Rabatt nur mit Registrierung.

Erstmal vielen Dank für die schnellen Hinweise. Ich werd mich da mal durchfitzen ob ich das mit modifizieren in der oxcmp_user.php hinbekomme.

Ps.: Ein Shopupdate ist gut gemeint, aber ich glaube bei mir hilft nur eine Neuinstallation. Es kann zuviel schief gehn:))

1 Like

This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.