Bouw een aangepast rapport in OpenCart

Het maakt niet uit met welk bedrijf u te maken hebt, het is altijd belangrijk om hulpmiddelen te hebben die u helpen de algemene statistieken van dagelijkse gebeurtenissen te analyseren. Het helpt natuurlijk ook om verdere strategieën voor uw bedrijf op te stellen voor het geval dingen niet op de goede weg zijn.

Vandaag bespreken we rapportagetools in de context van OpenCart. U vindt veel nuttige rapporten in de kern zelf. Er zijn vier hoofdcategorieën om precies te zijn - Verkoop, Producten, Klanten en Marketing - en elk van deze biedt verder meer opties om de informatie in verschillende contexten te bekijken..

In ons voorbeeld bouwen we een rapport waarin alle producten worden weergegeven die zijn bekeken maar die nog niet zijn gekocht. Het is natuurlijk een eenvoudig gebruik, maar u kunt doorgaan met het maken van een complexere versie volgens uw vereisten.

Ik veronderstel dat u de nieuwste versie van OpenCart gebruikt en bekend bent met het basismoduulontwikkelingsproces in OpenCart, omdat we de nadruk zullen leggen op het genereren van rapporten in plaats van de basismodules voor moduleontwikkeling. Als je de ontwikkeling van basismodules in OpenCart wilt verkennen, is er een leuk artikel over dit onderwerp.

Back-end bestandsinstellingen

Laten we een lijst maken van de bestanden die moeten worden geïmplementeerd voor ons aangepaste rapport:

  • admin / controller / verslag / product_custom.php: Het is het hoofdcontrollerdossier dat wordt gebruikt om modelgegevens te laden en de variabelen in te stellen.
  • admin / model / report / product_custom.php: Het is een modelbestand dat wordt gebruikt om SQL-query's in te stellen om de gegevens uit de database op te halen.
  • admin / view / template / verslag / product_custom.tpl: Het is een weergavebestand met de presentatielogica.
  • admin / taal / Engels / report / product_custom.php: Het is een taalbestand.

De controller

Ga je gang en maak een bestand aan admin / controller / verslag / product_custom.php met de volgende inhoud.

load> taal ( 'verslag / product_custom'); $ This-> document-> setTitle ($ this-> language-> krijgen ( 'HEADING_TITLE')); if (isset ($ this-> request-> get ['page'])) $ page = $ this-> request-> get ['page'];  else $ page = 1;  $ url = "; if (isset ($ this-> request-> get ['page'])) $ url. = '& page ='. $ this-> request-> get ['page']; $ data ['breadcrumbs'] = array (); $ data ['breadcrumbs'] [] = array ('text' => $ this-> language-> get ('text_home'), 'href' => $ this -> url-> link ('common / dashboard', 'token ='. $ this-> session-> data ['token'], 'SSL')); $ data ['breadcrumbs'] [] = array ( 'text' => $ this-> language-> get ('heading_title'), 'href' => $ this-> url-> link ('report / product_custom', 'token ='. $ this-> session- > data ['token']. $ url, 'SSL')); $ this-> load-> model ('report / product_custom'); $ data ['products'] = array (); $ filter_data = array ( 'start' => ($ page - 1) * $ this-> config-> get ('config_limit_admin'), 'limit' => $ this-> config-> get ('config_limit_admin')); $ product_total = $ this-> model_report_product_custom-> getTotalCustomProducts ($ filter_data); $ results = $ this-> model_report_product_custom-> getCustomProducts ($ filter_data); foreach ($ resultaten als $ resultaat) $ data ['producten'] [] = array (' name '=> $ result [' name '],' model '=> $ result [' model '],' bekeken '=> $ resultaat [' bekeken '],);  $ data ['heading_title'] = $ this-> language-> get ('heading_title'); $ data ['text_list'] = $ this-> language-> get ('text_list'); $ data ['text_no_results'] = $ this-> language-> get ('text_no_results'); $ data ['text_confirm'] = $ this-> language-> get ('text_confirm'); $ data ['column_name'] = $ this-> language-> get ('column_name'); $ data ['column_model'] = $ this-> language-> get ('column_model'); $ data ['column_viewed'] = $ this-> language-> get ('column_viewed'); $ data ['entry_date_start'] = $ this-> language-> get ('entry_date_start'); $ data ['entry_date_end'] = $ this-> language-> get ('entry_date_end'); $ data ['token'] = $ this-> session-> data ['token']; $ url = "; $ pagination = new Pagination (); $ pagination-> total = $ product_total; $ pagination-> page = $ page; $ pagination-> limit = $ this-> config-> get ('config_limit_admin') ; $ pagination-> url = $ this-> url-> link ('report / product_custom', 'token ='. $ this-> session-> data ['token']. $ url. '& page = page ',' SSL '); $ data [' pagination '] = $ pagination-> render (); $ data [' results '] = sprintf ($ this-> language-> get (' text_pagination '), ($ product_total )? (($ page - 1) * $ this-> config-> get ('config_limit_admin')) + 1: 0, ((($ page - 1) * $ this-> config-> get ('config_limit_admin' ))> ($ product_total - $ this-> config-> get ('config_limit_admin')))? $ product_total: ((($ page - 1) * $ this-> config-> get ('config_limit_admin')) + $ this-> config-> get ('config_limit_admin')), $ product_total, ceil ($ product_total / $ this-> config-> get ('config_limit_admin'))); $ data ['header'] = $ this- > load-> controller ('common / header'); $ data ['column_left'] = $ this-> load-> controller ('common / column_left'); $ data ['footer'] = $ this-> laden -> regelaar ( 'c EMEENSCHAPPELIJKE / voettekst '); $ this-> response-> setOutput ($ this-> load-> view ('report / product_custom.tpl', $ data)); 

Het belangrijkste om op te merken is dat we het onder de "report" -directory hebben geplaatst, wat de juiste plaats is voor alle rapportgerelateerde bestanden.

Afgezien van dat, het is vrij gebruikelijke controller dingen - we laden de juiste taal en het juiste model in de index-methode, en dan het opzetten van de variabelen. Aan het einde hebben we toegewezen product_custom.tpl als ons hoofdsjabloonbestand dat verantwoordelijk is voor de uitvoer van het hoofdrapport.

Het model

Als we verder gaan, kunnen we het modelbestand instellen op admin / model / report / product_custom.php.

config-> get ('config_language_id'). "'AND p.viewed> 0 AND ISNULL (op.product_id) ORDER BY p.viewed DESC"; if (isset ($ data ['start']) || isset ($ data ['limit'])) if ($ data ['start'] < 0)  $data['start'] = 0;  if ($data['limit'] < 1)  $data['limit'] = 20;  $sql .= " LIMIT " . (int)$data['start'] . "," . (int)$data['limit'];  $query = $this->db->-query ($ sql); return $ query-> rijen;  openbare functie getTotalCustomProducts ($ data) $ sql = "SELECT count (*) als totaal FROM". DB_PREFIX. "product p LEFT JOIN". DB_PREFIX. "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN". DB_PREFIX. "order_product op ON p.product_id = op.product_id WHERE pd.language_id = '". (int) $ this-> config-> get ('config_language_id'). "'EN p.viewed> 0 AND ISNULL (op.product_id)"; $ query = $ this-> db-> query ($ sql); return $ query-> row ['total']; 

Er zijn twee methoden in ons modelbestand: de getCustomProducts haalt de juiste records uit de database op, terwijl getTotalCustomProducts retourneert het totale aantal records dat door de paginering in de controller wordt gebruikt.

Het uitzicht

Vervolgens moet het weergavebestand zich bevinden op admin / view / template / verslag / product_custom.tpl.

 

  • ">

Het zal de lijst met producten op een mooie manier in tabelvorm weergeven, en het is natuurlijk responsief omdat bootstrap nu in de kern zit!

Het taalbestand

Aan het einde laten we een taalbestand maken op admin / taal / Engels / report / product_custom.php.

Dus dat is het voor zover het de configuratie van bestanden betreft.

Toestemming verlenen voor het aangepaste rapport

Hoewel we klaar zijn met onze aangepaste rapportmodule, kunt u deze nog niet openen. Dat komt omdat het wordt beschouwd als een nieuwe bron en de beheerdersgebruikersgroep moet toegang hebben tot deze bron. Laten we daarom doorgaan en toestemming geven voor deze bron aan de beheerdersgebruikersgroep.

Navigeren naar Systeem> Gebruikers> Gebruikersgroep en bewerk de Beheerder gebruikersgroep. Onder de Toegang tot toestemming vervolgkeuzelijst, vink het selectievakje aan verslag / product_custom bron en sla de groep op.

U zou nu toegang moeten hebben tot deze bron.

Hoe u ons rapport in het back-end kunt openen

We moeten wijzigen admin / view / template / common / menu.tpl om onze aangepaste rapportkoppeling op te nemen. Eenvoudigheidshalve zullen we het direct aanpassen, maar misschien wilt u hetzelfde bereiken met de OCMOD-extensie. Hiermee kunt u de kernbestanden wijzigen met behulp van een XML-gebaseerd systeem voor zoeken / vervangen.

Open nu de admin / view / template / common / menu.tpl bestand en zoek naar de volgende regel.

  • ">
  • Voeg na die regel de volgende regel toe.

  • "> Aangepast rapport
  • Nu zou je onze link hieronder moeten kunnen zien Rapporten> Producten. Klik hierop om ons geweldige aangepaste rapport te bekijken!

    Het geeft een overzicht van alle producten die worden bekeken en nog niet zijn gekocht. Dus dat is het voor zover het gaat om het maken van aangepaste rapporten; Ik hoop dat het niet teveel was in een keer. Maar goed, je hebt het idee en je zou het gemakkelijk kunnen uitbreiden volgens je vereisten.

    Conclusie

    Vandaag hebben we besproken hoe u een aangepast rapport kunt maken in OpenCart. We hebben het volledige proces van het instellen van de vereiste bestanden doorlopen en in het volgende deel van het artikel hebben we laten zien hoe we toegang hebben tot het rapport vanaf de back-end.

    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.

    Ik hoop dat je tot nu toe van alles hebt genoten en blijf op de hoogte voor meer informatie over OpenCart. In het geval van vragen en suggesties, kunt u mij bereiken via Twitter of de feedbackfeed hieronder gebruiken.