Maak een aangepaste Order Total -extensie in OpenCart

In dit artikel gaan we een aangepaste ordertotalenextensie maken in OpenCart. Met de ordertotalen kunt u het orderbedrag tijdens het afrekenen manipuleren. Het is een heel nuttige manier om de prijs te wijzigen door extra belastingen toe te voegen of door de verschillende methoden korting te geven. We zullen een volwaardige aangepaste ordertotalenextensie maken die een aangepaste belasting toepast die wordt gedefinieerd door het back-endconfiguratieformulier.

Als u een aangepaste totalenextensie wilt maken, moeten we bestanden in de back-end en front-end instellen. De backend-bestanden worden gebruikt om een ​​configuratieformulier in te stellen en de front-endbestanden worden gebruikt om de logica van de extensie te definiëren. Uiteraard zal OpenCart uw extensie niet detecteren tijdens het afrekenen zonder front-end bestanden.

We gebruiken de nieuwste versie van OpenCart. Ook neem ik aan dat je bekend bent met het basismoduulontwikkelingsproces in OpenCart. Als u hier niet bekend mee bent, is hier een leuk artikel over het ontwikkelen van aangepaste modules.

Laten we beginnen en meteen beginnen!

Back-end bestandsinstellingen

In dit gedeelte maken we bestanden met betrekking tot het back-endgedeelte. Aan het einde van dit gedeelte kunt u onze aangepaste ordertotalenextensie in de lijst bekijken, samen met de andere ordertotaalextensies. U kunt het ook installeren en configureren met behulp van het aangepaste configuratieformulier.

Ga je gang en maak een controllerbestand aan admin / controller / totaal / customot.php met de volgende inhoud.

load> taal ( 'total / customot'); $ This-> document-> setTitle ($ this-> language-> krijgen ( 'HEADING_TITLE')); $ This-> load-> model ( 'instelling / instelling'); if (($ this-> request-> server ['REQUEST_METHOD'] == 'POST') && $ this-> validate ()) $ this-> model_setting_setting-> editSetting ('customot', $ this-> request -> post); $ this-> session-> data ['success'] = $ this-> language-> get ('text_success'); $ this-> response-> redirect ($ this-> url-> link ('extension / total', 'token ='. $ this-> session-> data ['token'], 'SSL'));  $ data ['heading_title'] = $ this-> language-> get ('heading_title'); $ data ['text_edit'] = $ this-> language-> get ('text_edit'); $ data ['text_enabled'] = $ this-> language-> get ('text_enabled'); $ data ['text_disabled'] = $ this-> language-> get ('text_disabled'); $ data ['text_none'] = $ this-> language-> get ('text_none'); $ data ['entry_customtax'] = $ this-> language-> get ('entry_customtax'); $ data ['entry_status'] = $ this-> language-> get ('entry_status'); $ data ['entry_sort_order'] = $ this-> language-> get ('entry_sort_order'); $ data ['button_save'] = $ this-> language-> get ('button_save'); $ data ['button_cancel'] = $ this-> language-> get ('button_cancel'); if (isset ($ this-> error ['warning'])) $ data ['error_warning'] = $ this-> error ['warning'];  else $ data ['error_warning'] = "; $ data ['breadcrumbs'] = array (); $ data ['breadcrumbs'] [] = array ('text' => $ this-> taal-> get ('text_home'), 'href' => $ this-> url-> link ('common / dashboard', 'token ='. $ this-> session-> data ['token'], 'SSL') ); $ data ['breadcrumbs'] [] = array ('text' => $ this-> language-> get ('text_total'), 'href' => $ this-> url-> link ('extension / total ',' token = '. $ this-> session-> data [' token '],' SSL ')); $ data [' breadcrumbs '] [] = array (' text '=> $ this-> taal -> get ('heading_title'), 'href' => $ this-> url-> link ('total / customot', 'token ='. $ this-> session-> data ['token'], 'SSL ')); $ data [' action '] = $ this-> url-> link (' total / customot ',' token = '. $ this-> session-> data [' token '],' SSL ') ; $ data ['cancel'] = $ this-> url-> link ('extension / total', 'token ='. $ this-> session-> data ['token'], 'SSL'); if ( isset ($ this-> request-> post ['customot_customtax'])) $ data ['customot_customtax'] = $ this-> request-> post ['customot_customtax']; else $ data ['customot_customtax'] = $ this-> config-> get ('cus tomot_customtax);  if (isset ($ this-> request-> post ['customot_status'])) $ data ['customot_status'] = $ this-> request-> post ['customot_status'];  else $ data ['customot_status'] = $ this-> config-> get ('customot_status');  if (isset ($ this-> request-> post ['customot_sort_order'])) $ data ['customot_sort_order'] = $ this-> request-> post ['customot_sort_order'];  else $ data ['customot_sort_order'] = $ this-> config-> get ('customot_sort_order');  $ data ['header'] = $ this-> load-> controller ('common / header'); $ data ['column_left'] = $ this-> load-> controller ('common / column_left'); $ data ['footer'] = $ this-> load-> controller ('common / footer'); $ this-> response-> setOutput ($ this-> load-> view ('total / customot.tpl', $ data));  beschermde functie valideren () if (! $ this-> user-> hasPermission ('modify', 'total / customot')) $ this-> error ['warning'] = $ this-> language-> get (error_permission);  return! $ this-> error; 

Zoals u kunt zien, is het een redelijk standaard back-endcontroller die is ingesteld in OpenCart. Het belangrijkste doel van dit controllerbestand is het instellen van de labels en andere elementen die zullen worden gebruikt om het configuratieformulier weer te geven. Uiteraard behandelt het de formulierinzending door een formulier te valideren en waarden in de database op te slaan.

Laten we nu een taalbestand maken op admin / taal / Engels / totaal / customot.php met de volgende inhoud.

Nogmaals, het zou vrij gemakkelijk te begrijpen moeten zijn, omdat we alleen maar labels definiëren.

Ten slotte maken we een beeldsjabloonbestand op admin / view / template / totaal / customot.tpl.

 
"data-toggle =" tooltip "title ="">

  • ">

Dit bestand bevat de XHTML-code voor ons configuratieformulier.

Dus dat is het voor zover het ons opzet betreft. Ga naar Extensies> Order-totalen. Je zou onze extensie moeten kunnen zien Aangepast besteltotaal weergegeven samen met andere extensies. Laten we het installeren en configureren zoals getoond in de volgende screenshot.

Ik heb de Aangepaste belasting waarde voor 5, dus laadt het 5% van de totale bestelwaarde op. Vul de waarden in en sla het formulier op.

Front-end bestandsinstellingen

In dit gedeelte zullen we bestanden voor de front-end definiëren, zodat onze extensie wordt gedetecteerd in de front-end-uitcheckflow.

Maak een modelbestand catalogus / model / totaal / customot.php met de volgende inhoud.

load> taal ( 'total / customot'); // krijg customtax $ customtax_percentage = $ this-> config-> get ('customot_customtax'); if ($ customtax_percentage> 0) $ customtax_value = round (($ total * $ customtax_percentage) / 100); $ total_data [] = array ('code' => 'customot', 'title' => $ this-> language-> get ('text_customot'), 'value' => $ customtax_value, 'sort_order' => $ this -> config-> get ('customot_sort_order')); $ total + = $ customtax_value; 

Het is een belangrijk bestand en de centrale logica van onze extensie komt hier. Conventioneel noemt OpenCart de getTotal methode voor elke uitbreiding van ordertotalen tijdens het afrekenen. Je zou de belangrijke argumenten moeten opmerken $ total_data, $ totale en $ belastingen.

De $ total_data variabele vertegenwoordigt een array van alle gegevens van de totale orderuitbreidingen. De $ totale variabele is het totale orderbedrag, en $ belastingen bevat de toegepaste belastingen.

In die methode halen we een Aangepaste belasting waarde die is ingesteld via het configuratieconfiguratieformulier. Verder berekenen we het aangepaste btw-bedrag en wijzen we het toe aan de $ customtax_value variabel. Vervolgens pluggen we onze order totalen extensie-informatie in de $ total_data array en voeg het aangepaste belastingbedrag toe aan de $ totale veranderlijk.

Ten slotte moeten we een taalbestand definiëren op catalogus / taal / Engels / totaal / customot.php met de volgende inhoud.

Dus dat is het voor de front-end!

Demo in de front-end

Ga je gang en voeg producten toe aan je winkelwagentje, zodat je onze aangepaste belasting kunt zien die wordt weergegeven in de volgende schermafbeelding.

Dus op deze manier kunt u het orderbedrag beïnvloeden met behulp van de ordertotalen-extensie.

Conclusie

In dit artikel hebben we geleerd hoe u een aangepaste ordertotalen-extensie kunt maken en het orderbedrag kunt manipuleren. Het is een heel nuttige manier om aangepaste belasting en kortingen te koppelen. 

Als u op zoek bent naar aanvullende OpenCart-hulpmiddelen, hulpprogramma's, uitbreidingen en dergelijke die u kunt gebruiken in uw eigen projecten of voor uw eigen opleiding, vergeet dan niet te zien wat we beschikbaar hebben op de markt.

Suggesties en vragen zijn altijd welkom!