Neu Warenkorb Dropdown Navi: Entfernen Button

MaxWe

Sehr aktives Mitglied
6. August 2018
311
42
Hamburg
Moin Moin,

wir sind gerade am Umbauen unseres Warenkorbs. Wir wollen diesen weitesgehend aufs Dropdown Navi beschränken. Hierfür müssen wir einen entfernen Button für jede Pos im Dropdown Navi integrieren. Das integrieren des Buttons ist kein Problem, die Funktionalität dahinter leider schon.

Standardmäßig findet die Übermittlung des Formulars, durch den entfernen Button via POST statt. Hierdurch findet in der relevanten Funktion ein redirect (via Header) statt. Theoretisch suggeriert die genutzt Funktion (applyCartChanges) aus dem CartHelper, dass bei einem GET kein Redirect stattfindet. Nach ersten Tests funktioniert das einfache Umstellen des Submits auf GET aber leider nicht. Die Pos bleibt im Warenkorb und es passiert nichts.

Hat hier jemand bereits so eine Lösung umgesetzt oder einen Tip?

Meine Idee wäre nun die Basisfunktion zu nehmen und in eine eigene Umzusetzen. Hierfür müsste ich allerdings eine eigene URL für den Aufruf der richtigen .php integrieren (im Formular target statt /warenkorb, sowas wie /delwarenkorb). Wo könnte ich die Adresse hinterlegen? Das konnte ich leider so nicht finden.. Der Redirect dann wieder auf die aktuelle Seite stellt ja kein Problem dar.

Grüße
 

FPrüfer

Moderator
Mitarbeiter
19. Februar 2016
1.878
519
Halle
Theoretisch suggeriert die genutzt Funktion (applyCartChanges) aus dem CartHelper, dass bei einem GET kein Redirect stattfindet. Nach ersten Tests funktioniert das einfache Umstellen des Submits auf GET aber leider nicht. Die Pos bleibt im Warenkorb und es passiert nichts.
Doch das funktioniert schon! Solche Aufrufe sind jedoch mittels Token gesichert. Wenn du das per GET aufrufen willst, musst du den Parameter token im Request mitschicken. Im Template kannst du den mittels token={$smarty.session.jtl_token} erzeugen.
 
  • Gefällt mir
Reaktionen: MaxWe

MaxWe

Sehr aktives Mitglied
6. August 2018
311
42
Hamburg
Doch das funktioniert schon! Solche Aufrufe sind jedoch mittels Token gesichert. Wenn du das per GET aufrufen willst, musst du den Parameter token im Request mitschicken. Im Template kannst du den mittels token={$smarty.session.jtl_token} erzeugen.
Hmm der Token wurde sicher mitgeschickt. Die URL sieht dann so aus:
Code:
/Warenkorb?jtl_token=713998bcded528d484b1b4c11d6667bcebc19c6d5a866b4ca926e5e453f8aaf6&wka=1&anzahl%5B0%5D=1&dropPos=0

Die Seite nach dem Abschicken, sieht wie folgt aus:
Screenshot 2022-04-04 161440.jpg

In den Smarty Variablen ist auch noch der Warenkorb Inhalt hinterlegt..

Gibt es sonst vielleicht noch etwas zu beachten?

EDIT: Und er redirected auch weiterhin beim GET request
 
Zuletzt bearbeitet:

MaxWe

Sehr aktives Mitglied
6. August 2018
311
42
Hamburg
Das Entfernen funktioniert nun, allerdings findet immer noch ein redirect auf den Warenkorb statt.
Hast du da vll. auch direkt noch eine Idee? @FPrüfer

Also klar, dass grundsätzlich ein Redirect stattfindet. Es wird ja der Warenkorb aufgerufen. Allerdings könnte die Funktion ja direkt zurück zur letzten Seite leiten. Ich befürchte aber, dass dies standardmäßig nicht unterstützt wird?
 
Zuletzt bearbeitet:

MaxWe

Sehr aktives Mitglied
6. August 2018
311
42
Hamburg
Oke Problem gelöst.. Muss dafür zwar leider die warenkorb.php anfassen, aber nur minimal.

Ersetze
Code:
$smarty->display('basket/index.tpl');
durch
Code:
if(isset($_GET['noRedirect']) && $_GET['noRedirect'] === 'Y'){
    \header(
        'Location: ' . $_SERVER['HTTP_REFERER'],
        true,
        303
    );
}else{
    $smarty->display('basket/index.tpl');
}

"HTTP_REFERER" zeigt auf die zuletzt aufgerufene URI des Nutzers.

Zusätzlich in der Warenkorb Form noch den neuen hidden input hinzufügen
Code:
<input type="hidden" name="noRedirect" value="Y">
 

FPrüfer

Moderator
Mitarbeiter
19. Februar 2016
1.878
519
Halle
...Muss dafür zwar leider die warenkorb.php anfassen, aber nur minimal.
Die Core-Dateien zu ändern ist grundsätzlich eine schlechte Idee. Viel besser wäre es doch - auch für die User-Experience - den Get-Call per Ajax abzusetzen und bei Erfolg den angezeigten Warenkorb per DOM-Änderung zu manipulieren. Das würde zumindest alles per Template-Anpassung gehen.
Bei deiner Lösung solltest du jedoch auf alle Fälle entweder den Host aus $_SERVER['HTTP_REFERER'] entfernen und durch den aus dem Define für URL_SHOP ersetzen oder die URL anderweitig validieren, um nicht Referrer-XSS zu ermöglichen.
 

MaxWe

Sehr aktives Mitglied
6. August 2018
311
42
Hamburg
Hmm ja da gebe ich dir recht, ich bin da auch kein Fan von.. Für die UE scheint mir da kein großer Unterschied zu sein, höchstens ein Reload weniger. Wir werden es aber deinem Ratschlag entsprechend anpassen, mir gefällt das auch besser :) Meine aktuelle Lösung ist eher eine quick-and-dirty Lösung.

Quasi

PHP:
$url = URL_SHOP . parse_url($_SERVER['HTTP_REFERER'], PHP_URL_PATH);
 
Ähnliche Themen
Titel Forum Antworten Datum
Neu Artikel im Warenkorb wird von 1 auf null runtergesetzt. Anstatt es zu entfernen wird es automatisch wieder auf 1 gesetzt Allgemeine Fragen zu JTL-Shop 6
Neu Im Warenkorb werden falsche Merkmalnamen geladen bei mehrsprachigen Shops JTL-Shop - Fehler und Bugs 2
Neu "Kaufen" statt in den Warenkorb Plugins für JTL-Shop 2
Neu Warenkorb Hinweise bei Bestandsänderung und Preisänderung Allgemeine Fragen zu JTL-Shop 2
Neu Warenkorb Menge aktualisiert nicht den Preis (Reload geht nicht) JTL-Shop - Fehler und Bugs 5
Neu NEU ✔️ PDF-Angebots-Plugin für den JTL-Shop 5 - PDF Angebote von der Produktseite oder aus dem Warenkorb heraus generieren B2C / B2B Plugins für JTL-Shop 5
Neu Warenkorb per Link teilen Allgemeine Fragen zu JTL-Shop 7
Neu Versandkosten Berechnung im Warenkorb wird nicht aktualisiert JTL-Shop - Fehler und Bugs 1
Neu Warenkorb nach X Tagen löschen JTL-Shop - Ideen, Lob und Kritik 2
Neu OPC - productstream als Liste wir keine Warenkorb Button angezeigt Betrieb / Pflege von JTL-Shop 2
Neu Versandkosten im Warenkorb werden als Artikel angezeigt Allgemeine Fragen zu JTL-Shop 6
Anzeige der VPE neben "Warenkorb hinzufügen" Einrichtung JTL-Shop5 1
Neu Crosselling - Warenkorb Allgemeine Fragen zu JTL-Shop 10
Neu /navi.php?q=2 Abfragen laufen auf 404 Gelöste Themen in diesem Bereich 4

Ähnliche Themen