Schnelltipp Akzeptieren Sie mehrere Gutscheine in OpenCart 2.0

OpenCart ist eine Open-Source-Online-E-Commerce-Lösung auf PHP-Basis, mit der Sie online Bestellungen annehmen können. Es ermöglicht Kunden das Einkaufen mit Gutscheinen, jedoch standardmäßig nur eines. Wenn Sie Ihren Kunden die gleichzeitige Verwendung mehrerer Gutscheine ermöglichen möchten, müssen Sie den Code ändern. Ich werde Ihnen in diesem Tutorial genau zeigen, wie das geht.

Wie erstellen wir einen Geschenkgutschein??

Nur Admins und zugelassene Backend-Benutzer können Geschenkgutscheine erstellen. OpenCart wird mit einem Standardmodul geliefert. Der folgende Screenshot zeigt den Ort, an dem ein Back-End-Benutzer Gutscheine erstellen kann.

Worin besteht das Problem?

Wenn wir standardmäßig ein Gutschein-System in OpenCart implementiert haben, was ist das Problem? Verstehen wir es anhand eines Beispiels:

Kürzlich wollte eine Freundin von mir über OpenCart ein paar Artikel kaufen, die 800 Dollar kosteten, aber sie hatte nur 500 Dollar und zwei Geschenkgutscheine im Wert von jeweils 250 Dollar. Sie rief mich an und bat um eine Lösung. Da mit OpenCart nur ein einziger Gutschein zum gleichzeitigen Einkaufen verwendet werden kann, konnte sie die Artikel nicht kaufen.

Eine Lösung

Um dieses Problem zu beheben, müssen Sie eine Option hinzufügen, um mehrere Gutscheine zu verwenden, damit Kunden problemlos einkaufen können. Hier ist die Lösung, in der wir einige Codezeilen modifizieren und dieses Problem lösen helfen. 

Dieses Tutorial ist in drei Hauptschritte unterteilt:

  1. Ändern Sie im Controller
  2. Ändern Sie im Modell
  3. Ändern Sie in der Ansicht

1. Controller-Datei

  1. Navigiere zu Katalog / Controller / Kasse / Warenkorb.php.
  2. Suchen Sie den folgenden Code: 
If (isset ($ this-> request-> post ['voucher']) && $ this-> gültiger Gutschein ()) $ this-> session-> data ['voucher'] = $ this-> request-> Post ['Gutschein']; 

Ändern Sie den obigen Code in:

Wenn (isset ($ this-> request-> post ['voucher']) && $ this-> gültiger Gutschein ()) $ this-> session-> data ['voucher'] [$ this-> request-> post ['voucher']] = $ this-> request-> post ['voucher']; // erstellt ein Array für mehrere Gutscheine 

2. Modelldatei

  1. Navigiere zu Katalog / Modell / Gesamt / voucher.php.
  2. Suchen Sie die folgenden Codezeilen:
$ this-> load-> model ('Checkout / Gutschein'); $ voucher_info = $ this-> model_checkout_voucher-> getVoucher ($ this-> session-> data ['voucher']); if ($ voucher_info) if ($ voucher_info ['betrag']> $ total) $ betrag = $ total;  else $ betrag = $ voucher_info ['betrag'];  $ total_data [] = array ('code' => 'voucher', 'title' => sprintf ($ this-> language-> get ('text_voucher'), $ this-> session-> data ['voucher') ]), 'text' => $ this-> currency-> format (- $ betrag), 'value' => - $ betrag, 'sort_order' => $ this-> config-> get ('voucher_sort_order')) ; $ total - = $ betrag;  

Wir müssen eine äußere Schleife ausführen, um alle Gutscheine abzurufen, die wir in Schritt 1 als Array verwaltet haben. Wir werden also eine äußere Schleife hinterlegen $ this-> load-> model ('Checkout / Gutschein');.

Wir werden also unser Session Vouchers Array durchlaufen, um alle Gutscheine abzurufen, die wir angewendet haben, und der Code wird wie unten gezeigt aussehen. Beachten Sie, dass der folgende Code kommentiert wird, um ihn verständlicher zu machen.

foreach (array_unique ($ this-> session-> data ['voucher']) als $ voucher) // Die foreach-Schleife wählt jedes Array aus und extrahiert den eindeutigen Gutschein $ voucher_info = $ this-> model_checkout_voucher-> getVoucher ($ voucher) ); // Bestelldetails abrufen // Check 1: Wenn ein Gutschein existiert if ($ voucher_info) // Check 2: Wenn der Gutscheinbetrag größer als der Bestellbetrag ist, wird der Gutscheinbetrag beibehalten, wenn ($ voucher_info ['Betrag']) > $ total) $ Betrag = $ total;  else $ betrag = $ voucher_info ['betrag'];  // End Check 2 // Array, um aktualisierte Summen zurückzugeben $ total_data [] = array ('code' => 'voucher', 'title' => sprintf ($ this-> language-> get ('text_voucher'), $ voucher), 'text' => $ this-> Währung-> Format (- $ Betrag), 'Wert' => - $ Betrag, 'sort_order' => $ this-> config-> get ('voucher_sort_order') ); // End Array $ total - = $ betrag; // subtrahiert den Betrag mit unseren Auftragssummen // End Check 1 // Foreach-Schleife beenden

3. Datei anzeigen

  1. Navigiere zu catalog / view / theme / default / template / checkout / voucher.tpl.
  2. Suchen Sie die folgende Codezeile:

Ersetzen Sie es mit diesem:

Wir sind fertig mit unserem Problem! Tatsächlich haben wir nur ein paar einfache Code-Hacks erstellt, um dieses große Problem zu lösen, sodass wir kein neues Modul oder eine neue Erweiterung entwickeln mussten. Wir haben nur einige Codezeilen geändert, um es fertig zu stellen.

Fazit

In diesem Artikel haben wir eine erfolgreiche Lösung für das Hinzufügen mehrerer Gutscheine in unserem E-Shop bereitgestellt. Da OpenCart Kunden nicht standardmäßig die Verwendung mehrerer Gutscheine erlaubt, haben wir den Code so geändert, dass er jetzt beliebig viele Gutscheine verwenden kann. So können Kunden problemlos einkaufen. 

In unseren nächsten Artikeln werden wir einige reale Business-Tools in unser OpenCart-System implementieren. Bleiben Sie also abonniert und bringen Sie Ihre wertvollen Kommentare ein. Vielen Dank!