Anzeige der Felder im Checkout ist abhängig, ob der Warenkorbwert = 0 ist

Hallo zusammen,

ich bin neu in der Pluginprogrammierung für Shopware 6. Ich biete u.a. auch digitale Produkte an, die kostenfrei sind.

Wenn diese kostenfrei sind, so sollte der Benutzer nicht noch seine Anschrift angeben. Das Plugin soll dann so eingreifen, dass bei einem Warenkorbwert von 0 Euro der Checkout nur die Felder Name und E-Mail beinhaltet. Ist der Warenkorbwert > 0, greift der normale Checkout ein.

Ich dachte an einen StoreFrontController, der den Warenkorb abfragt, welcher Wert die Artikel haben und wenn der bei 0 liegt, ruft der Controller ein Template auf, dass wiederum den besagten Block vom Checkout überschreibt und nur die beiden Felder anzeigt.

Ist das technisch machbar und wie würde das gehen? Vielen Dank vorab für die Hilfe

Nicht so, wie du es umsetzen möchtest. Nur weil du Felder im Template „ausblendest“, heißt das nicht, dass das Backend nicht Werte für die Felder haben möchte. Du müsstest den kompletten Register und Checkout Service umschreiben.

Ich kann dem Backend doch Werte vorgaukeln, in dem ich Ihm alle Werte übermittle, die er braucht, diese jedoch nur hidden sind?

Das geht natürlich. Da die Felder jedoch nicht leer sein dürfen, musst du konkrete Psydodaten eingeben.

Ich steige leider noch nicht ganz durch die Plugin-Programmierung durch.

Wie kann ich im Controller abfragen, welchen Wert mein Warenkorb aktuell hat? Ich finde leider 0,0 dazu im Internet

Den solltest du über die Cart Class bekommen:

Shopware\Core\Checkout\Cart

public function getPrice(): CartPrice

Danke dafür. Hat mir geholfen und alles erledigt